Debian Sarge の Ruby 1.8.4 で AES256 の decrypt に失敗するんだけどなぜ。
共通鍵暗号使ってデータの encrypt/decrypt をしたくって、AES256使おうと思って調べていて、Ruby リファレンスマニュアルのOpenSSL::Cipher::Cipherの部分を参考にして書いてみたところ、このテストコードすらうまく動かないのですが、なぜ。。
#!/usr/bin/ruby
require 'openssl'
c1 = OpenSSL::Cipher::Cipher.new("AES256")
c2 = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
pass = "open sesame!"
data = "Hello world!"
c1.pkcs5_keyivgen(pass)
s1 = c1.encrypt.update(data) + c1.final
c2.pkcs5_keyivgen(pass)
s2 = c2.decrypt.update(s1) + c2.final
p(data == s2) #=> true
実行結果はこんな感じ
$ ruby ./openssltest.rb
./openssltest.rb:11:in `final': bad decrypt (OpenSSL::CipherError)
from ./openssltest.rb:11
ちなみに Triple DES のサンプルコードのほうはうまく動いたんだよな。 なんかRuby側の暗号化ライブラリって、IDEAがよいもの見つからず、AESだとdecryptできず、いまさらTriple DESなんて使いたくないし、と、袋小路に突入中。 PerlのOpenSSLライブラリでも同じこと起きるかチェックしてみますが、今日はもう寝ます。
コメント
コメントを投稿