Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CAUTION - OpenSSL ruby module silently truncates key and iv.
- Use Cipher#pkcs5_keyivgen or Cipher#random_(key|iv).
- irb(main):001:0> require 'openssl'
- => true
- irb(main):002:0> enc = OpenSSL::Cipher::DES.new
- => #<OpenSSL::Cipher::DES:0x00000001e01d88>
- irb(main):003:0> enc.encrypt
- => #<OpenSSL::Cipher::DES:0x00000001e01d88>
- irb(main):004:0> enc.key = key = OpenSSL::Random.random_bytes(256/8)
- => "\xB7[\x06\xE3\xA2\x7F\xD6P\xEFu\x1D\x95\xCB\x01\t\xBE\xF6Dl\xC0\xEE\xDF\xA8\x96\xE8\x8D\x1FV~\xB4\x06@"
- irb(main):005:0> enc.iv = iv = OpenSSL::Random.random_bytes(128/8)
- => "\x82\e\xB0\x11\x92\x18%\x8FMaP\n_\x93=\xF3"
- irb(main):006:0> plain = "hello,world"
- => "hello,world"
- irb(main):007:0> cipher = enc.update(plain) + enc.final
- => "\t\x83\x0E7\xC4\xFC\xBDIvs6\x05\b\xFF\xC1\xD5"
- irb(main):008:0> dec = OpenSSL::Cipher::DES.new
- => #<OpenSSL::Cipher::DES:0x00000001fe7030>
- irb(main):009:0> dec.decrypt
- => #<OpenSSL::Cipher::DES:0x00000001fe7030>
- irb(main):010:0> dec.key, dec.iv = key, iv
- => ["\xB7[\x06\xE3\xA2\x7F\xD6P\xEFu\x1D\x95\xCB\x01\t\xBE\xF6Dl\xC0\xEE\xDF\xA8\x96\xE8\x8D\x1FV~\xB4\x06@", "\x82\e\xB0\x11\x92\x18%\x8FMaP\n_\x93=\xF3"]
- irb(main):011:0> dec.update(cipher) + dec.final
- => "hello,world"
- irb(main):012:0> dec = OpenSSL::Cipher::DES.new
- => #<OpenSSL::Cipher::DES:0x00000002033660>
- irb(main):013:0> dec.decrypt
- => #<OpenSSL::Cipher::DES:0x00000002033660>
- irb(main):014:0> dec.key, dec.iv = key[0, 64/8], iv[0, 64/8]
- => ["\xB7[\x06\xE3\xA2\x7F\xD6P", "\x82\e\xB0\x11\x92\x18%\x8F"]
- irb(main):015:0> dec.update(cipher) + dec.final
- => "hello,world"
- irb(main):016:0>
Add Comment
Please, Sign In to add comment