gpt4 book ai didi

ruby - 使用 Ruby OpenSSL 加密文件并使用命令行解密

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:00 25 4
gpt4 key购买 nike

我正在使用 Ruby 自动执行 OpenSSL 文件加密过程。以这种方式加密的文件需要能够在 linux 命令行上使用 OpenSSL 进行解密。

我可以使用以下 Ruby 方法加密文件:

  def encrypt_file
cipher = OpenSSL::Cipher.new('aes-256-cbc')
cipher.encrypt
cipher.key = "somelongkeystring"

buf = ""
File.open("file.enc", "wb") do |outf|
File.open("file.zip", "rb") do |inf|

while inf.read(4096, buf)
outf << cipher.update(buf)
end
outf << cipher.final
end
end
end

我需要能够使用以下命令解密文件 (file.enc):

$ openssl aes-256-cbc -d -in file.enc -out file.zip

但是,当我运行它时,在我从上面键入 key 后,我得到了一个关于 bad magic number 的错误。

由于我无法更改解密方法(这意味着它仅使用密码并在 linux 命令行上输入),我如何更改我的 Ruby 方法来加密文件,以便可以通过这种方式解密?

最佳答案

借助stackoverflow中的类似问题,我能够在ruby中实现它。

首先你必须添加一个 iv 到你的密码对象中,就像这样

cipher = OpenSSL::Cipher.new('aes-256-cbc')
cipher.encrypt
cipher.iv = "0"*16
cipher.key = "somelongkeystring"

解密时你必须传递-K-iv

openssl aes-256-cbc -d -in file.enc -out file.zip -K <key_hex_code> -iv <iv_hex_code>

你可以在 ruby​​ 中生成 hex 代码,比如 "string".unpack('H*')。也必须有一些方法可以在 cli 中生成十六进制代码。

关于ruby - 使用 Ruby OpenSSL 加密文件并使用命令行解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32346466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com