There are two easy ways to do this. One of them is to put it on openssl to perform encryption / decryption there. Perhaps the best way would be to use a Ruby Crypto gem .
Program for encryption:
require 'rubygems'
require 'crypt/blowfish';
puts "Password? "
pw = gets
puts "Secret data? "
data = gets
blowfish = Crypt::Blowfish.new(pw)
r = StringIO.new(data);
File.open('data', 'w') do |f|
while l = r.read(8) do
while l.size < 8 do l += "\0" end
f.print blowfish.encrypt_block(l)
end
end
Program for decryption:
require 'rubygems'
require 'crypt/blowfish';
puts "Password? "
pw = gets
blowfish = Crypt::Blowfish.new(pw)
r = StringIO.new();
File.open('data', 'r') do |f|
while l = f.read(8) do
r << blowfish.decrypt_block(l)
end
end
puts "Secret data:"
puts r.string
This example uses the blowfish symmetric block cipher. Other ciphers may be used. In addition, you probably want to combine a fixed string with a password to make the key longer and help to associate encryption / decryption with your application.
source
share