Guest User

Untitled

a guest
Jun 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. CAUTION - OpenSSL ruby module silently truncates key and iv.
  2. Use Cipher#pkcs5_keyivgen or Cipher#random_(key|iv).
  3.  
  4. irb(main):001:0> require 'openssl'
  5. => true
  6. irb(main):002:0> enc = OpenSSL::Cipher::DES.new
  7. => #<OpenSSL::Cipher::DES:0x00000001e01d88>
  8. irb(main):003:0> enc.encrypt
  9. => #<OpenSSL::Cipher::DES:0x00000001e01d88>
  10. irb(main):004:0> enc.key = key = OpenSSL::Random.random_bytes(256/8)
  11. => "\xB7[\x06\xE3\xA2\x7F\xD6P\xEFu\x1D\x95\xCB\x01\t\xBE\xF6Dl\xC0\xEE\xDF\xA8\x96\xE8\x8D\x1FV~\xB4\x06@"
  12. irb(main):005:0> enc.iv = iv = OpenSSL::Random.random_bytes(128/8)
  13. => "\x82\e\xB0\x11\x92\x18%\x8FMaP\n_\x93=\xF3"
  14. irb(main):006:0> plain = "hello,world"
  15. => "hello,world"
  16. irb(main):007:0> cipher = enc.update(plain) + enc.final
  17. => "\t\x83\x0E7\xC4\xFC\xBDIvs6\x05\b\xFF\xC1\xD5"
  18. irb(main):008:0> dec = OpenSSL::Cipher::DES.new
  19. => #<OpenSSL::Cipher::DES:0x00000001fe7030>
  20. irb(main):009:0> dec.decrypt
  21. => #<OpenSSL::Cipher::DES:0x00000001fe7030>
  22. irb(main):010:0> dec.key, dec.iv = key, iv
  23. => ["\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"]
  24. irb(main):011:0> dec.update(cipher) + dec.final
  25. => "hello,world"
  26. irb(main):012:0> dec = OpenSSL::Cipher::DES.new
  27. => #<OpenSSL::Cipher::DES:0x00000002033660>
  28. irb(main):013:0> dec.decrypt
  29. => #<OpenSSL::Cipher::DES:0x00000002033660>
  30. irb(main):014:0> dec.key, dec.iv = key[0, 64/8], iv[0, 64/8]
  31. => ["\xB7[\x06\xE3\xA2\x7F\xD6P", "\x82\e\xB0\x11\x92\x18%\x8F"]
  32. irb(main):015:0> dec.update(cipher) + dec.final
  33. => "hello,world"
  34. irb(main):016:0>
Add Comment
Please, Sign In to add comment