Вы можете использовать \ u
в GNU sed для заглавной буквы:
sed -e 's/_\(.\)/_\u\1/' input
Perl делает то же самое:
perl -pe 's/_(.)/_\u$1/' input
\ l
делает противоположное.
El error que tienes después de esperar un tiempo para descifrar la contraseña, y mencionas que parece que el método "tiene un tiempo de caducidad" se debe a que el salt
generado aleatoriamente varía con el tiempo. (por ej. será diferente cada día)
Al cifrar, los primeros caracteres de la contraseña cifrada son la sal utilizada al cifrar con una sal; debe usar la misma sal para descifrar.
Tenga en cuenta que si intenta cifrar sin sal, ¿en MacOS/más antiguo? versiones de openssl tienes que usar la palabra clave -nosalt
; openssl
genera y usa un salt por defecto.
Entonces, para cifrar sin sal, debe hacer:
echo P@$$word| openssl enc -aes-128-cbc -a -nosalt -pass pass:pass_key
Sin embargo, al almacenar contraseñas, es una mala práctica descifrarlas para compararlas con las contraseñas candidatas; más adelante para comparar scripts no los descifras:
lo que hace para comparar contraseñas es cifrar una contraseña para verificar con la misma sal (si usa sal ), y compare las cadenas cifradas para ver si coinciden.
Si es para reenviar contraseñas entre sistemas y no almacenarlas, usar salt
no es tan esencial, sin embargo, tenga en cuenta que ayuda a mantenerlo más seguro.
Sin embargo, en caso de que tenga grandes necesidades de seguridad en cuanto a la fuerza del cifrado, OpenSSL es conocido por tener una fuerza de cifrado débil y GnuPG es más fuerte que OpenSSL para el cifrado.
$ echo P@$$word
P@74266word
$ echo 'P@$$word'
P@$$word
Recuerde siempre citar cadenas. Además, las expansiones de variables de comillas dobles como$1
:
$ ls
a_file
$ variable="a*"
$ echo $variable
a_file
$ echo "$variable"
a*
Además, para comparar contraseñas, debe comparar las contraseñas cifradas, no las descifradas. Si se usa una sal, se debe usar la misma sal que se usó para cifrar la contraseña original. OpenSSL almacena esto en los primeros ocho bytes de los datos cifrados.