lib/keen/aes_helper.rb in keen-0.9.4 vs lib/keen/aes_helper.rb in keen-0.9.5
- old
+ new
@@ -1,44 +1,37 @@
require 'openssl'
require 'digest'
require 'base64'
module Keen
- module AESHelper
+ class AESHelper
- BLOCK_SIZE = 32
+ class << self
+ def aes256_decrypt(key, iv_plus_encrypted)
+ aes = OpenSSL::Cipher::AES.new(256, :CBC)
+ iv = iv_plus_encrypted[0, aes.key_len]
+ encrypted = iv_plus_encrypted[aes.key_len, iv_plus_encrypted.length]
+ aes.decrypt
+ aes.key = unhexlify(key)
+ aes.iv = unhexlify(iv)
+ aes.update(unhexlify(encrypted)) + aes.final
+ end
- def aes256_encrypt(key, plaintext, iv = nil)
- aes = OpenSSL::Cipher::AES.new(256, :CBC)
- aes.encrypt
- aes.key = key
- aes.iv = iv unless iv.nil?
- iv ||= aes.random_iv
- [aes.update(plaintext) + aes.final, iv]
- end
+ def aes256_encrypt(key, plaintext, iv = nil)
+ aes = OpenSSL::Cipher::AES.new(256, :CBC)
+ aes.encrypt
+ aes.key = unhexlify(key)
+ aes.iv = iv unless iv.nil?
+ iv ||= aes.random_iv
+ hexlify(iv) + hexlify(aes.update(plaintext) + aes.final)
+ end
- def aes256_decrypt(key, iv_plus_encrypted)
- iv = iv_plus_encrypted[0, 16]
- encrypted = iv_plus_encrypted[16, iv_plus_encrypted.length]
- aes = OpenSSL::Cipher::AES.new(256, :CBC)
- aes.decrypt
- aes.key = key
- aes.iv = iv
- aes.update(encrypted) + aes.final
- end
+ def hexlify(msg)
+ msg.unpack('H*')[0]
+ end
- def hexlify(msg)
- msg.unpack('H*')[0]
- end
-
- def unhexlify(msg)
- [msg].pack('H*')
- end
-
- def pad(msg)
- pad_len = BLOCK_SIZE - (msg.length % BLOCK_SIZE)
- padding = pad_len.chr * pad_len
- padded = msg + padding
- padded
+ def unhexlify(msg)
+ [msg].pack('H*')
+ end
end
end
end