在ruby中读取/写入受密码保护和加密的文件

我想加密ruby程序将从中加载数据的文件。 另外,我需要程序在启动时提示输入密码,用于解密文件。

换句话说,该文件需要在机器上加密,只有拥有密码的用户才能运行该应用程序。

我已经开始关注openpgp,但据我了解,这仍然无法解决密码问题。

有两种简单的方法可以做到这一点。 一种是打开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对称块密码。 可以使用其他密码。 此外,您可能希望将固定字符串连接到密码,使密钥更长,并帮助将加密/解密与应用程序联系起来。

尝试加密的字符串gem 。 奇迹般有效。