Class: Keen::AESHelperOld
- Inherits:
-
Object
- Object
- Keen::AESHelperOld
- Defined in:
- lib/keen/aes_helper_old.rb
Constant Summary collapse
- BLOCK_SIZE =
32
Class Method Summary collapse
- .aes256_decrypt(key, iv_plus_encrypted) ⇒ Object
- .aes256_encrypt(key, plaintext, iv = nil) ⇒ Object
- .hexlify(msg) ⇒ Object
- .pad(msg) ⇒ Object
- .unhexlify(msg) ⇒ Object
Class Method Details
.aes256_decrypt(key, iv_plus_encrypted) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/keen/aes_helper_old.rb', line 11 def aes256_decrypt(key, iv_plus_encrypted) padded_key = pad(key) unhexed_iv_plus_encrypted = unhexlify(iv_plus_encrypted) iv = unhexed_iv_plus_encrypted[0, 16] encrypted = unhexed_iv_plus_encrypted[16, unhexed_iv_plus_encrypted.length] aes = OpenSSL::Cipher::AES.new(256, :CBC) aes.decrypt aes.key = padded_key aes.iv = iv aes.update(encrypted) + aes.final end |
.aes256_encrypt(key, plaintext, iv = nil) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/keen/aes_helper_old.rb', line 23 def aes256_encrypt(key, plaintext, iv = nil) raise OpenSSL::Cipher::CipherError.new("iv must be 16 bytes") if !iv.nil? && iv.length != 16 padded_key = pad(key) aes = OpenSSL::Cipher::AES.new(256, :CBC) aes.encrypt aes.key = padded_key aes.iv = iv unless iv.nil? iv ||= aes.random_iv encrypted = aes.update(plaintext) + aes.final hexlify(iv) + hexlify(encrypted) end |
.hexlify(msg) ⇒ Object
35 36 37 |
# File 'lib/keen/aes_helper_old.rb', line 35 def hexlify(msg) msg.unpack('H*')[0] end |
.pad(msg) ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/keen/aes_helper_old.rb', line 43 def pad(msg) missing_chars = msg.length % BLOCK_SIZE return msg if missing_chars == 0 pad_len = BLOCK_SIZE - missing_chars padding = pad_len.chr * pad_len padded = msg + padding padded end |
.unhexlify(msg) ⇒ Object
39 40 41 |
# File 'lib/keen/aes_helper_old.rb', line 39 def unhexlify(msg) [msg].pack('H*') end |