Есть два простых способа сделать это. Одним из них является раскошелиться на openssl, чтобы выполнить там ваше шифрование / дешифрование. Возможно, лучшим способом было бы использовать Ruby Crypto gem .
Программа для шифрования:
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
Программа для расшифровки:
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
В этом примере используется симметричный блочный шифр Blowfish. Другие шифры могут быть использованы. Кроме того, вы, вероятно, захотите объединить фиксированную строку с паролем, сделать ключ длиннее и помочь связать шифрование / дешифрование с вашим приложением.