Чтение / запись защищенного паролем и зашифрованного файла в ruby - PullRequest
3 голосов
/ 09 июля 2009

Я хочу зашифровать файл, из которого программа ruby ​​будет загружать данные. Кроме того, мне нужно, чтобы программа запрашивала пароль при запуске, который будет использоваться для расшифровки файла.

Другими словами, файл должен храниться в зашифрованном виде на компьютере, и только пользователи с паролями смогут запускать приложение.

Я начал смотреть на openpgp, но, насколько я понимаю, это все еще не решает проблему с паролем.

Ответы [ 2 ]

6 голосов
/ 10 июля 2009

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

0 голосов
/ 09 ноября 2011

Попробуйте зашифрованные строки gem . Работает как шарм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...