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ライブラリでも同じこと起きるかチェックしてみますが、今日はもう寝ます。

コメント

このブログの人気の投稿

大型特殊自動車免許を取った時の話。

パスワードを覚えるのも無理があるから、パスワードマネージャ使いましょう。

車両系建設機械運転者(整地) の講習