
Estoy tratando de hacer algo muy simple, es decir, usar una contraseña de 64 bits y un texto sin formato de 64 bits (ambos en hexadecimal) y cifrarlo con un simple DES antiguo.
mi script se ve así:
plaintext=`echo -n "$2" | sed 's/\(..\)/\\\x\1/g'`
key=$1
printf "$plaintext" | openssl enc -nosalt -e -des -nopad -K "$key" -iv "0000000000000000" | od --format=x1 --width=32 --address-radix=n | sed 's/ //g'
Ejecuto y obtengo el siguiente resultado:
./des_enc 5B5A57676A56676E 675A69675E5A6B5A
b617e2c84a4fba2149dd7132433031392257b99d9284b1031c351c15825aca52
El problema es que hay demasiados datos provenientes de openssl, espero obtener solo 64 bits de datos en lugar de 512. No sé cómo solicitar explícitamente una versión de DES de 64 bits, ¿es posible?
Nota: Los valores utilizados anteriormente provienen de "H. Katzan, The Standard Data Encryption Algorithm, pp75-94, Petrocelli Books Inc., Nueva York, 1977" y son:
Key: 5B5A57676A56676E
Plaintext: 675A69675E5A6B5A
Ciphertext: 974AFFBF86022D1F
Respuesta1
El texto claro también se proporciona en hexadecimal. Debe volver a convertirlo a binario antes de cifrarlo.