$B@.@%$G$9!#(B
openssl $B%b%8%e!<%k$N(B AES (CBC mode) $B$,;H$($J$$$h$&$G$9!#(B
require'openssl'
c1 = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
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
$B$r<B9T$7$h$&$H$9$k$H!"(Bc2.final $B$G0J2<$N%(%i!<$,H/@8$7$^$9!#(B
OpenSSL::CipherError: bad decrypt
from (irb):359:in `OpenSSL::Cipher::Cipher#final'
from (irb):359:in `Kernel#binding'
from :0
aes-128-cfb aes-128-ecb aes-128-ofb $B$H$$$C$?(B
CBC $B0J30$N%b!<%I$G$OF0:n$7$^$9$7!"(B
AES$B0J30$NJ}<0$N(B CBC $B$OF0:n$7$^$9!#(B
$B$^$?!"(Bopenssl $B%3%^%s%I$+$i$@$HF0:n$9$k$N$G!"(B
Ruby/OpenSSL
$B$NLdBj$@$H;W$&$N$G$9$,!"$=$l0J>e$OD4$Y@Z$l$^$;$s$G$7$?!#(B
$B$H$3$m$G!"(BOpenSSL::Cipher::AES$B$G$9$,!"(B
openssl $B$G$O(B -aes $B$,L5$$$?$a!"(B
OpenSSL::Cipher::AES.new(256, 'cbc')
$B$J$I$H$7$J$$$H=i4|2=$G$-$^$;$s!#(B
OpenSSL::Cipher::AES128, OpenSSL::Cipher::AES192,
OpenSSL::Cipher::AES256 $B$J$i$P!"(B
$B$=$l$>$l(B -aes128, -aes192, -aes256 $B$HBP1~$9$k$?$a!"(B
$B0z?t$J$7$G%$%s%9%?%s%9$r:n$l$k$N$G$$$$$H;W$&$N$G$9$,!#(B
openssl aes-*-cbc is broken
on 03.05.2006 18:56
Re: openssl aes-*-cbc is broken
on 05.05.2006 10:16
In message <44552AD3.405@airemix.com>, `"NARUSE, Yui" <naruse@airemix.com>' wrote: > openssl $B%b%8%e!<%k$N(B AES (CBC mode) $B$,;H$($J$$$h$&$G$9!#(B $B;n$7$F$_$k$H(BECB$B$bF1MM$G$7$?!#(B > aes-128-cfb aes-128-ecb aes-128-ofb $B$H$$$C$?(B > CBC $B0J30$N%b!<%I$G$OF0:n$7$^$9$7!"(B > AES$B0J30$NJ}<0$N(B CBC $B$OF0:n$7$^$9!#(B > $B$^$?!"(Bopenssl $B%3%^%s%I$+$i$@$HF0:n$9$k$N$G!"(B > Ruby/OpenSSL $B$NLdBj$@$H;W$&$N$G$9$,!"$=$l0J>e$OD4$Y@Z$l$^$;$s$G$7$?!#(B $B$J$s$G$=$&$J$k$+$O$A$c$s$HD4$Y$F$J$$$N$G$9$,!"80$H(BIV$B$r%;%C%H(B $B$9$kA0$K(Bencrypt$B$r8F$V$HF0$/$h$&$G$9!#(B % ruby -e ' require "openssl" pass = "open sesame!" data = "Hello world!" c1 = OpenSSL::Cipher::Cipher.new("AES-256-CBC") c1.encrypt c1.pkcs5_keyivgen(pass) s1 = c1.update(data) + c1.final c2 = OpenSSL::Cipher::Cipher.new("AES-256-CBC") c2.decrypt c2.pkcs5_keyivgen(pass) s2 = c2.update(s1) + c2.final p(data == s2) #=> true ' > OpenSSL::Cipher::AES128, OpenSSL::Cipher::AES192, > OpenSSL::Cipher::AES256 $B$J$i$P!"(B > $B$=$l$>$l(B -aes128, -aes192, -aes256 $B$HBP1~$9$k$?$a!"(B > $B0z?t$J$7$G%$%s%9%?%s%9$r:n$l$k$N$G$$$$$H;W$&$N$G$9$,!#(B $B$=$&$G$9$M!#$3$N5!2q$KDI2C$7$h$&$H;W$$$^$9!#(B
