Sha256: d5f7ef521450f429aa03cd20b083c2950670cce6aa973e68fa5247e141b7560f

Contents?: true

Size: 1013 Bytes

Versions: 51

Compression:

Stored size: 1013 Bytes

Contents

require 'openssl'
require 'base64'

module Rubber
  module Encryption
    
    def cipher_algorithm
      OpenSSL::Cipher.new("AES-256-CBC")
    end
    
    def cipher_digest
      OpenSSL::Digest.new("SHA256")
    end
    
    def generate_encrypt_key
      OpenSSL::Digest.hexdigest('md5', rand.to_s)
    end
    
    def encrypt(payload, secret)
      cipher = cipher_algorithm

      cipher.encrypt
      cipher.pkcs5_keyivgen(cipher_digest.hexdigest(secret))
      
      encrypted_data = cipher.update(payload) + cipher.final
      encoded_encrypted_data = Base64.encode64(encrypted_data)
      
      return encoded_encrypted_data
    end
    
    def decrypt(encoded_encrypted_data, secret)
      cipher = cipher_algorithm

      cipher.decrypt
      cipher.pkcs5_keyivgen(cipher_digest.hexdigest(secret))
      
      encrypted_data = Base64.decode64(encoded_encrypted_data)
      payload = cipher.update(encrypted_data) + cipher.final
      
      return payload
    end

    extend self
    
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
rubber-3.2.2 lib/rubber/encryption.rb
rubber-3.2.1 lib/rubber/encryption.rb
rubber-3.2.0 lib/rubber/encryption.rb
rubber-3.1.0 lib/rubber/encryption.rb
rubber-3.0.1 lib/rubber/encryption.rb
rubber-3.0.0 lib/rubber/encryption.rb
rubber-2.16.0 lib/rubber/encryption.rb
rubber-2.15.2 lib/rubber/encryption.rb
rubber-2.15.1 lib/rubber/encryption.rb
rubber-2.15.0 lib/rubber/encryption.rb
rubber-2.14.0 lib/rubber/encryption.rb
rubber-2.13.1 lib/rubber/encryption.rb
rubber-2.13.0 lib/rubber/encryption.rb
rubber-2.12.2 lib/rubber/encryption.rb
rubber-2.12.1 lib/rubber/encryption.rb
rubber-2.12.0 lib/rubber/encryption.rb
rubber-2.11.0 lib/rubber/encryption.rb
rubber-2.10.2 lib/rubber/encryption.rb
rubber-2.10.1 lib/rubber/encryption.rb
rubber-2.10.0 lib/rubber/encryption.rb