matsuda
8/31/2012 - 1:20 AM

可逆的暗号化

可逆的暗号化

# -*- 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