Sha256: 0161caf53a92dc59f94b09dc420a02be50dbedca994c4be6c65722e05d81142d

Contents?: true

Size: 687 Bytes

Versions: 1

Compression:

Stored size: 687 Bytes

Contents

require 'openssl'
require 'base64'
require 'json'
require 'parsel/marshal'
require 'parsel/json'
require 'parsel/version'

module Parsel
  def self.encrypt(key, data)
    encode cipher(:encrypt, key, data)
  end

  def self.decrypt(key, data)
    cipher(:decrypt, key, decode(data))
  rescue Exception
    false
  end

  private
  def self.cipher(mode, key, data)
    cipher = OpenSSL::Cipher.new('AES-256-CBC').public_send(mode)
    cipher.key = Digest::SHA256.digest(key)
    cipher.iv = 'f89209ffcdd1a225'
    cipher.update(data) + cipher.final
  end

  def self.encode(data)
    Base64.encode64(data).gsub(/\n/, '')
  end

  def self.decode(data)
    Base64.decode64(data)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
parsel-0.2.0 lib/parsel.rb