2012-01-20 14 views
5

¿Cómo puedo engañar al argumento -in de la herramienta de línea de comandos de OpenSSL para obtener datos de cadenas en lugar de un archivo?OpenSSL Command Line Tool: argumento "-in" de la cadena

Normalmente, podría usar echo comando para hacerlo:

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

¿Hay alguna manera de hacerlo sin echo y el tubo? Similar al argumento -pass pass:?

¡Gracias de antemano!

Respuesta

2

he encontrado un camino a seguir en torno a este! En lugar de pasar todo antes y desde OpenSSL tiene un modo interactivo, es posible ejecutar el comando sin entrada:

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

Y OpenSSL le estará esperando para cifrar los datos. ¡Esto también puede ser útil para las transmisiones!

a continuación, escriba en la cadena o datos que desea cifrar y enviar un EOT (Fin de la transmisión) en la Terminal es habitual ^DControl+D que se dará salida a stdout la cadena cifrada!

Espero que esto ayude a alguien algún día.

4

Si su cáscara es bash y su sistema operativo lo admite, puede utilizar process substitution:

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

Hola, funciona bien desde mi terminal, el problema es que estoy usando NSTask en Objective-C para llamar a la herramienta y eso no funciona allí ... gracias. – TCB13

+0

Puede usar "/ bin/bash -c ..." para alimentar un comando para bash. Esto tiene otros problemas (metacaracteres del shell que conducen a agujeros de seguridad, etc.), pero permitiría que la sustitución del proceso funcione. – Nemo

+0

sí ... "agujeros de seguridad" Estoy usando OpenSSL aquí ... para que entiendas que me importa tener algo de seguridad. (Al menos seguridad provista por un NSPipe). Gracias. – TCB13

Cuestiones relacionadas