如何用Ruby加密文件?

如何用Ruby加密文件?,ruby,security,encryption,openssl,Ruby,Security,Encryption,Openssl,我需要写一个简单的工具来加密/解密文件 我想最好的方法是使用OpenSSL: 生成密钥: openssl rand -base64 2048 > secret_key 加密文件: openssl aes-256-cbc -a -e -in file -out file.enc -k secret_key openssl aes-256-cbc -d -in file.enc -out file -k secret_key 解密文件: openssl aes-256-cbc -a -e

我需要写一个简单的工具来加密/解密文件

我想最好的方法是使用OpenSSL:

生成密钥:

openssl rand -base64 2048 > secret_key
加密文件:

openssl aes-256-cbc -a -e -in file -out file.enc -k secret_key
openssl aes-256-cbc -d -in file.enc -out file -k secret_key
解密文件:

openssl aes-256-cbc -a -e -in file -out file.enc -k secret_key
openssl aes-256-cbc -d -in file.enc -out file -k secret_key

有没有一种简单的方法可以在Ruby中实现这一点?有更好的方法吗?也许使用PGP?

Ruby有一个可以解决繁重工作的方法。

Ruby的OpenSSL是OpenSSL本身的一个薄包装,提供了OpenSSL本身几乎所有的功能,因此,是的,所有示例都有一对一的映射:

openssl rand -base64 2048 > secret_key
这实际上被夸大了,您使用的是AES-256,所以您只需要一个256位的密钥,这里不使用RSA。Ruby OpenSSL将这个决定从您的肩上卸下,它将根据您想要使用的算法自动确定正确的密钥大小

您还犯了在加密过程中使用确定性IV的错误。为什么?因为您根本不指定IV,所以OpenSSL本身将默认为一个全部为零字节的IV。这不是一件好事,因此我将向您展示正确的方法,有关更多信息,请查看


那么问题到底是什么:使用OpenSSL而不需要调用外部程序?解密的命令应该是:
OpenSSL aes-256-cbc-d-a-in file.enc-out file-k secret_key
,否则您将得到一个
坏的魔法数字
谢谢。我可能需要转到PGP,因为它支持文件的PKI(我有一些小文件),所以我可以轻松地支持多个用户,而不会有存储密钥的问题。@Istvan OpenSSL中也支持PKI。我想知道这个答案是否需要任何更新,如果需要的话,最好添加一些。