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

在ruby中读取/写入受密码保护和加密的文件,ruby,encryption,Ruby,Encryption,我想加密一个ruby程序将从中加载数据的文件。 此外,我需要程序在启动时提示输入密码,用于解密文件 换句话说,文件需要在机器上加密,只有拥有密码的用户才能运行应用程序 我已经开始研究openpgp,但据我所知,这仍然不能解决密码问题。有两种简单的方法可以做到这一点。一种是使用openssl进行加密/解密。可以说更好的方法是使用 要加密的程序: require 'rubygems' require 'crypt/blowfish'; puts "Password? " pw = gets put

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

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


我已经开始研究openpgp,但据我所知,这仍然不能解决密码问题。

有两种简单的方法可以做到这一点。一种是使用openssl进行加密/解密。可以说更好的方法是使用

要加密的程序:

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
需要“rubygems”
需要“地窖/河豚”;
输入“密码?”
pw=get
把“秘密数据”放在哪里
data=get
河豚=地穴::河豚。新(pw)
r=StringIO.new(数据);
文件.open('data','w')do | f|
当l=r时,读(8)do
当l.size<8时,l+=“\0”结束
f、 打印河豚。加密块(l)
结束
结束
要解密的程序:

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
需要“rubygems”
需要“地窖/河豚”;
输入“密码?”
pw=get
河豚=地穴::河豚。新(pw)
r=StringIO.new();
文件.open('data','r')do | f|
当l=f时,读(8)do

r试试这个。工作起来很有魅力。

你不应该这样做。基本上,这段代码所做的是实现ECB(电子码本模式),这是非常糟糕的,因为它让您接触到各种各样的分析技术,从而否定了大多数(如果不是全部的话)河豚的优点。有关更多详细信息,请参阅。