Kazuki Yamaguchi<
> どのライブラリでしょうか。OpenSSL(libcrypto)だとすると、BF_set_key()
> も同様に直接暗号鍵を設定するものです。ですから、
> 
>     BF_KEY key;
>     BF_set_key(&key, 8, "\0\1\2\3\4\5\6\7");
> 
> に相当するものは、OpenSSL::Cipher で書き直すと、
> 
>     cipher = OpenSSL::Cipher.new("bf-<なにか>").encrypt
>     cipher.key_len = 8
>     cipher.key = "\0\1\2\3\4\5\6\7"
> 
> となります。

ライブラリはopensslでした。
なるほど、同じ文字列を渡せるのですね。

> パスワードから暗号鍵を導出する方法はいくつかありますが、Ruby の標準ライ
> ブラリの中では PBKDF2(+HMAC) が使えます。
> 
>     salt = OpenSSL::Random.random_bytes(16)
>     key_iv = OpenSSL::PKCS5.pbkdf2_hmac(pass, salt, 100_000, cipher.key_len + cipher.iv_len, "sha256")
>     cipher.key = key_iv[0, cipher.key_len]
>     cipher.iv = key_iv[cipher.key_len, cipher.iv_len]

たいへん参考になります。
ありがとうございました。


-- 
株式会社ライフメディア システム開発部
松永肇一