31 lines
820 B
Ruby
31 lines
820 B
Ruby
require 'openssl'
|
|
require 'base64'
|
|
require 'uri'
|
|
|
|
class AESEncDec {
|
|
cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
|
|
|
|
def export_key
|
|
ENV['aes_key'] = cipher.key = cipher.random_key # stores the key in key, and also sets the generated key on the cipher
|
|
ENV['aes_iv'] = cipher.iv = cipher.random_iv # stores the iv in iv, and also sets the generated iv on the cipher
|
|
end
|
|
|
|
def encrypt(data)
|
|
cipher.encrypt
|
|
cipher.key = ENV["aes_key"]
|
|
cipher.iv = ENV["aes_iv"]
|
|
encrypted = cipher.update(data) + cipher.final
|
|
encrypted = Base64.urlsafe_encode64(encrypted)
|
|
return encrypted
|
|
end
|
|
|
|
def decrypt
|
|
cipher.decrypt
|
|
cipher.key = ENV["aes_key"]
|
|
cipher.iv = ENV["aes_iv"]
|
|
|
|
# Start the decryption
|
|
decoded = Base64.urlsafe_decode64(encrypted)
|
|
decrypted = cipher.update(decoded) + cipher.final
|
|
end
|
|
} |