type=class
superclass=Object
included=
extended=
library=openssl

̸ŹΤݲ줿󥿡ե󶡤륯饹Ǥ

ŪˤΥ饹ľܻȤäƥǡŹ沽뤳Ȥ
򤱤Ƥ̾Ϥʥ󥿡եѲǽ
ϤǤɬפʤΤϰŹ楢르ꥺꤹ뤿 
[[m:OpenSSL::Cipher.new]] ǰŹ楪֥Ȥ뤳ȤǤ礦

⤷Υ饹ľѤưŹ沽ϡŹθ
IV(Initialization Vector)μ갷ˤĤ򤷤Ƥ
Ƥ

ʲμѤޤ
  * [[m:OpenSSL::Cipher.new]]  [[m:OpenSSL::Cipher::AES256.new]] 
    ʤɤǰŹ楪֥Ȥ
  * [[m:OpenSSL::Cipher#encrypt]], [[m:OpenSSL::Cipher#decrypt]] 
    Ź桢Τ򤹤뤫ꤹ
  * [[m:OpenSSL::Cipher#key=]], [[m:OpenSSL::Cipher#iv=]], 
    [[m:OpenSSL::Cipher#random_key]], [[m:OpenSSL::Cipher#random_iv]] ʤɤ
     IV(initialization vector) ꤹ
  * [[m:OpenSSL::Cipher#update]], [[m:OpenSSL::Cipher#final]] 
    Ź沽/沽򤹤


ruby 1.8.3  Cast5  Idea  CAST5  IDEA ˲̾ޤ

=== ֥åŹ⡼
AES Τ褦ʥ֥åŹǤϰŹ򤹤ݤ
⡼ɤꤹɬפޤΥ饤֥Ǥ
ʲΤ褦ʸǥ⡼ɤǤޤ
  * "CBC"
  * "CFB"
  * "ECB"
  * "OFB"
ʸΰ̣
[[ref:lib:openssl#references]] ʤɤĴ٤Ƥ
AES Ѥ硢̾ CBC ѤɤǤ礦
ˤäƤϰ꤬ΤǵĤƤ


=== 
  require 'openssl'
  
  p a123 = "0123456789"
  pass = "hogehoge"
  enc = OpenSSL::Cipher::DES.new
  enc.encrypt
  enc.pkcs5_keyivgen(pass)
  p a = enc.update(a123)
  p b = enc.final
  s = a + b
  
  dec = OpenSSL::Cipher::DES.new
  dec.decrypt
  dec.pkcs5_keyivgen(pass)
  p a = dec.update(s)
  p b = dec.final
  p a + b #=> "0123456789"
