【发布时间】:2011-11-10 03:58:06
【问题描述】:
我想加密一个 ruby 程序将从中加载数据的文件。 另外,我需要程序在启动时提示输入密码,用于解密文件。
换句话说,文件需要在机器上加密,只有有密码的用户才能运行应用程序。
我已经开始看openpgp,但据我了解,这仍然不能解决密码问题。
【问题讨论】:
标签: ruby encryption
我想加密一个 ruby 程序将从中加载数据的文件。 另外,我需要程序在启动时提示输入密码,用于解密文件。
换句话说,文件需要在机器上加密,只有有密码的用户才能运行应用程序。
我已经开始看openpgp,但据我了解,这仍然不能解决密码问题。
【问题讨论】:
标签: ruby encryption
有两种简单的方法可以做到这一点。一种是掏出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 对称块密码。可以使用其他密码。此外,您可能希望将固定字符串连接到密码,以使密钥更长,并帮助将加密/解密与您的应用程序联系起来。
【讨论】:
试试encrypted strings gem。像魅力一样工作。
【讨论】: