2011-09-12 14 views
2

私は、単純な古いDESで64ビットのパスワードと64ビットのプレーンテキスト(両方とも16進数)と暗号化を使用するという単純なことをやろうとしています。opensslで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 

の問題は、私が唯一の64を得ることを期待のopensslから戻ってくる大量のデータがありますですビットの代わりにデータを取得する。私は64ビットバージョンのDESを明示的に要求する方法がわからない。

注:上記の使用された値からある "H. Katzan、標準のデータ暗号化アルゴリズム、pp75-94、Petrocelliブックス社、ニューヨーク、1977年には" ある:

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

答えて

5

使用-des-ecb。素晴らしい仕事

sh % echo 675A69675E5A6B5A | xxd -r -ps | openssl enc -des-ecb -nopad -K 5B5A57676A56676E | xxd -ps 
974affbf86022d1f 
+4

は、またXXD先端が本当に、感謝し、それをより読みやすくなります:あなたはそれが便利(それはvimのパッケージの一部です)持っている場合にも、xxdは、このパイプラインのずっときれいになります! –

関連する問題