Bash 使用64位DES和openssl进行加密

Bash 使用64位DES和openssl进行加密,bash,encryption,openssl,Bash,Encryption,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 --addres

我正在尝试做一件非常简单的事情,即使用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位。我不知道如何显式请求64位版本的DES,这可能吗

注:上面使用的值来自于“H.Katzan,标准数据加密算法,pp75-94,Petrocelli Books Inc.,纽约,1977年”是:


使用
-des ecb
。另外,
xxd
使这个管道更加干净,如果您手头有它的话(它是vim包的一部分):


这很好,而且xxd提示真的让它更可读,谢谢!
Key:        5B5A57676A56676E
Plaintext:  675A69675E5A6B5A
Ciphertext: 974AFFBF86022D1F
sh % echo 675A69675E5A6B5A | xxd -r -ps | openssl enc -des-ecb -nopad -K 5B5A57676A56676E | xxd -ps
974affbf86022d1f