可逆的暗号化
# -*- coding: utf-8 -*-
require 'openssl'
require 'base64'
# https://gist.github.com/176169
module ReversibleEncryption
# extend ActiveSupport::Concern
ENCRYPTION_PRIVATE_KEY = 'secret_token'
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def encrypt(string)
enc = OpenSSL::Cipher::DES.new
enc.encrypt
enc.pkcs5_keyivgen(ENCRYPTION_PRIVATE_KEY)
Base64.encode64(enc.encrypt.update(string) + enc.final)
end
def decrypt(string)
dec = OpenSSL::Cipher::DES.new
dec.decrypt
dec.pkcs5_keyivgen(ENCRYPTION_PRIVATE_KEY)
dec.decrypt.update(Base64.decode64(string)) + dec.final
end
end
end