2012-01-20 29 views
5

Làm cách nào tôi có thể lừa đối số -in của công cụ dòng lệnh OpenSSL để lấy dữ liệu từ chuỗi thay vì tệp?OpenSSL Command Line Tool: đối số "-in" từ chuỗi

Thông thường, tôi có thể sử dụng echo lệnh để làm điều đó:

echo 'test string 1' | openssl enc -aes-256-cbc -a -salt -pass pass:mypassword 

Có cách nào tôi có thể làm điều đó mà không echo và ống? Tương tự như đối số -pass pass:?

Cảm ơn trước!

Trả lời

2

Tôi tìm thấy một con đường để đi xung quanh này! Thay vì chuyển mọi thứ trước và kể từ khi openssl có chế độ tương tác, có thể chạy lệnh mà không cần nhập:

openssl enc -aes-256-cbc -a -salt -pass pass:mypassword 

Và OpenSSL sẽ đợi dữ liệu mã hóa. Điều này cũng có thể hữu ích cho các luồng!

Sau đó gõ vào chuỗi hoặc dữ liệu mà bạn muốn mã hóa và gửi EOT (End of Transmission) trong Terminal là bình thường ^DControl+D nó nó sẽ ra đến stdout chuỗi mã hóa!

Hy vọng điều này có thể giúp ai đó một ngày nào đó!

4

Nếu vỏ của bạn là bash và hệ điều hành của bạn hỗ trợ nó, bạn có thể sử dụng process substitution:

openssl enc -in <(echo 'test string 1') -aes-256-cbc -a -salt -pass pass:mypassword 
+0

Xin chào, nó hoạt động tốt từ thiết bị đầu cuối của tôi, vấn đề là tôi đang sử dụng NSTask trong mục tiêu-C để gọi công cụ và điều đó không hoạt động ở đó ... cảm ơn. – TCB13

+0

Bạn có thể sử dụng "/ bin/bash -c ..." để nạp một lệnh để bash. Điều này có các vấn đề khác (các siêu ký tự shell dẫn đến lỗ hổng bảo mật, vv), nhưng nó sẽ cho phép quá trình thay thế hoạt động. – Nemo

+0

vâng ... "lỗ hổng bảo mật" Tôi đang sử dụng OpenSSL ở đây ... để bạn có thể hiểu rằng tôi quan tâm đến việc bảo mật. (Ít nhất là an ninh được cung cấp bởi một NSPipe). Cảm ơn. – TCB13