BiCrypt

require 'bicrypt'

Encrypt string.

e = BiCrypt.new("akey")

m = e.encrypt_string("This is a message!")

m.assert! == "This is a message!"

Decrypt string.

d = BiCrypt.new("akey")

r = d.decrypt_string(m)

r.assert == "This is a message!"

Encrypt file.

File.open('EXAMPLE.txt', 'w'){ |f| f << "This is an example." }

e = BiCrypt.new("akey")

e.encrypt_file('EXAMPLE.txt', 'secret.txt')

File.read('EXAMPLE.txt').assert! == File.read('secret.txt')

Decrypt file.

d = BiCrypt.new("akey")

d.decrypt_file('secret.txt', 'tmp/README.rdoc')

File.read('EXAMPLE.txt').assert == File.read('EXAMPLE.txt')

Both the string and the file methods are built on top of the general stream methods.

plainIO = StringIO.new("This is the message!")
cryptIO = StringIO.new('')

e = BiCrypt.new("akey")

e.encrypt_stream(plainIO, cryptIO)

Decrypt IO stream.

crypt2IO = StringIO.new(cryptIO.string)
resultIO = StringIO.new('')

d = BiCrypt.new("akey")

d.decrypt_stream(crypt2IO, resultIO)

resultIO.string.assert == "This is the message!"