Pythonで書かれた別のプログラムとやり取りするプログラムを書いています。暗号化された結果が異なることがわかりました。
ghci では、HsOpenSSL を使用すると、暗号化された結果は次のようになります。\GS\n\197:
import OpenSSL
import OpenSSL.EVP.Cipher
import Data.Maybe
method <- fmap fromJust $ withOpenSSL $ getCipherByName "bf-cfb"
cipher method "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f\x72" "\xcc\x88\xa5\x26\x85\xaf\x7f\x8d" Encrypt "abcd"
Python では、暗号化された結果はK\x10<Q
import M2Crypto
M2Crypto.EVP.Cipher("bf_cfb", "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f\x72", "\xcc\x88\xa5\x26\x85\xaf\x7f\x8d", 1).update("abcd")
シェルでは、文字列「abcd」を含むabcd.txtを使用すると、vimではabcd.binが次のように表示されます。K^P<Q}
openssl bf-cfb -in abcd.txt -out abcd.bin -pass pass:abc -K 900150983cd24fb0d6963f7d28e17f72 -iv cc88a52685af7f8d -nosalt
M2Crypto の結果はコマンド ラインの結果と同等だと思いますが、HsOpenSSL の結果が異なるのはなぜですか?