対称鍵暗号のために抽象化されたインターフェースを提供するクラス。
以下が実装されているクラス。
使用例。
require 'openssl' p a123 = "0123456789" pass = "hogehoge" enc = OpenSSL::Cipher::DES.new enc.encrypt(pass) p a = enc.update(a123) p b = enc.final s = a + b dec = OpenSSL::Cipher::DES.new dec.decrypt(pass) p a = dec.update(s) p b = dec.final p a + b #=> "0123456789"
require 'openssl' include OpenSSL::Cipher c1 = Cipher.new("DES-EDE3-CBC") c2 = DES.new(:EDE3, "CBC") key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" iv = key hexkey = "0000000000000000000000000000000000000000000000" hexiv = "0000000000000000" data = "DATA" s1 = c1.encrypt(key, iv).update(data) + c1.final s2 = c2.encrypt(key, iv).update(data) + c2.final p(s1 == s2) #=> true
reset
暗号、暗号鍵、暗号化復号化フラグを共にリセットする。
encrypt(pass, iv)
暗号化の準備をする。iv は initialization vector、必要なら使用される。
decrypt(pass, iv)
復号化の準備をする。iv は initialization vector、必要なら使用される。
update(data)
与えられた文字列を暗号化あるいは復号化して文字列として返す。直前に呼ばれた encrypt あるいは decrypt により暗号化か復号化かが決まる。
final()
ブロックに残っているデータを暗号化あるいは復号化する。final() を呼んだあとでは update を呼んではいけない。
key=
暗号鍵。
key_len
key_len=
暗号鍵の長さ。
iv=
iv は initialization vector。
iv_len
iv の長さを返す。
block_size
ブロックのサイズを返す。
padding=
パディングを設定する。
pkcs5_keyivgen(pass, salt=nil, num=2048, digest=OpenSSL::Digest::MD5.new())
key と iv を生成し key= と iv= に設定する。 salt は 8-octet string でないといけない。nil を返す。
OpenSSL::Cipher::CipherError