Sha256: 1a56b9e2f37860be987e69e3304af3e3a282be3493b6eb3322faf97c9b5816d1
Contents?: true
Size: 1008 Bytes
Versions: 6
Compression:
Stored size: 1008 Bytes
Contents
require 'openssl' require 'digest' require 'base64' module Keen class AESHelper 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) raise OpenSSL::Cipher::CipherError.new("iv must be 16 bytes") if !iv.nil? && iv.length != 16 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 hexlify(msg) msg.unpack('H*')[0] end def unhexlify(msg) [msg].pack('H*') end end end end
Version data entries
6 entries across 6 versions & 1 rubygems