Sha256: 7ae30341634b3d5d4a492b83e8affe66602e55afcb1a8871e6b82d7ae46ee38e

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

require "openssl"
include OpenSSL
 
module SdbDal
  class Crypto
    include OpenSSL::Cipher
    def initialize(options={})
      key_dir=options[:key_dir] if options.has_key?(:key_dir)
      key_dir ||="/tmp"
      @cipher = Cipher.new("AES-256-CBC")

      if File.exists?(key_dir+'/.cipher_key')
        @key=File.open(key_dir+'/.cipher_key').read
      else
        @key =  @cipher.random_key()
        File.open(key_dir+"/.cipher_key",'w').write(@key)
      end




      if File.exists?(key_dir+'/.cipher_iv')
        @iv=File.open(key_dir+'/.cipher_iv').read
      else
        @iv =  @cipher.random_iv()
        File.open(key_dir+"/.cipher_iv",'w').write(@iv)
      end
    end

    def encrypt(text)

      @cipher.encrypt(@key,@iv)
      @cipher.key=@key
      @cipher.iv = @iv
      e = @cipher.update(text)
      e << @cipher.final()
      Base64.encode64(e)#.chomp

    end

    def decrypt(text)
      x=Base64.decode64(text)
      @cipher.decrypt(@key,@iv)
      @cipher.key = @key
      @cipher.iv = @iv
      d = @cipher.update(x)
      d << @cipher.final()
      return  d
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sdb_dal-0.0.8 ./lib/sdb_dal/crypto.rb
sdb_dal-0.0.7 ./lib/sdb_dal/crypto.rb
sdb_dal-0.0.6 ./lib/sdb_dal/crypto.rb
sdb_dal-0.0.9 ./lib/sdb_dal/crypto.rb