Quiero encriptar un montón de cadenas usando openssl. ¿Cómo paso texto sin formato en la consola a openssl (en lugar de especificar un archivo de entrada que tiene texto sin formato)?
La página de manual de openssl solo tiene estas dos opciones relacionadas con la entrada/salida:
-in <file> input file
-out <file> output file
Esto es lo que he intentado hasta ahora:
Esto funciona bien,
openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000 -in plain.txt -out encrypted.txt
Si omito el parámetro -out, obtengo una cadena cifrada en la consola,
openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000 -in plain.txt
Pero si omito tanto -in como -out, obtengo un error:opción desconocida 'Encrypt ME',
openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000 "Encrypt ME"
Respuesta aceptada:
Usa esto:
[email protected]:~$ echo "my string to encrypt" | openssl aes-256-cbc -e -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000
a7svR6j/uAz4kY9jvWbJaUR/d5QdH5ua/vztLN7u/FE=
[email protected]:~$ echo "a7svR6j/uAz4kY9jvWbJaUR/d5QdH5ua/vztLN7u/FE=" | openssl aes-256-cbc -d -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000
my string to encrypt
O podría usar la sustitución de comandos:
[email protected]:~$ openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv \
00000000000000000000000000000000 -in <(echo "my string to encrypt") -out encrypted.txt