
Ich versuche etwas ganz Einfaches, nämlich ein 64-Bit-Passwort und einen 64-Bit-Klartext (beide im Hex-Format) zu verwenden und es mit einem einfachen alten DES zu verschlüsseln.
mein Skript sieht so aus:
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'
Ich führe es aus und erhalte das folgende Ergebnis:
./des_enc 5B5A57676A56676E 675A69675E5A6B5A
b617e2c84a4fba2149dd7132433031392257b99d9284b1031c351c15825aca52
Das Problem besteht darin, dass zu viele Daten von OpenSSL zurückkommen. Ich erwarte nur 64-Bit-Daten, stattdessen bekomme ich 512. Ich weiß nicht, wie ich explizit eine 64-Bit-Version von DES anfordern kann. Ist das überhaupt möglich?
Hinweis: Die oben verwendeten Werte stammen aus „H. Katzan, The Standard Data Encryption Algorithm, S. 75–94, Petrocelli Books Inc., New York, 1977“ und lauten:
Key: 5B5A57676A56676E
Plaintext: 675A69675E5A6B5A
Ciphertext: 974AFFBF86022D1F
Antwort1
Der Klartext wird ebenfalls hexadezimal angegeben. Sie müssen ihn vor der Verschlüsselung wieder in Binärform umwandeln.