使用 DES 64 位元和 openssl 進行加密

使用 DES 64 位元和 openssl 進行加密

我正在嘗試做一件非常簡單的事情,即使用 64 位元密碼和 64 位元明文(均為十六進位)並使用簡單的舊 DES 對其進行加密。

我的腳本如下圖所示:

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'

我執行並得到以下結果:

./des_enc 5B5A57676A56676E 675A69675E5A6B5A
b617e2c84a4fba2149dd7132433031392257b99d9284b1031c351c15825aca52

問題是從 openssl 返回的數據太多,我希望只獲得 64 位元數據,而不是 512。

注意:上面使用的值來自「H. Katzan,標準資料加密演算法,第 75-94 頁,Petrocelli Books Inc.,紐約,1977 年」為:

Key:        5B5A57676A56676E
Plaintext:  675A69675E5A6B5A
Ciphertext: 974AFFBF86022D1F

答案1

明文也以十六進制給出。您必須在加密之前將其轉換回二進位。

相關內容