首页 > 解决方案 > 如何解密在 Ruby 中使用 des 命令加密的文件?

问题描述

我需要解密使用此命令加密的文件:

des -E -u -k "some key" file.in file.out.enc

Ruby中的解密代码:

def decrypt(key)
  cipher = OpenSSL::Cipher.new(‘des’).decrypt
  cipher.key = key

  File.open(‘file.out’, ‘wb’) do |outf|
    decrypted = cipher.update(File.read(‘file.in.enc’)) + cipher.final
    outf.write(decrypted)
  end
end

当我运行上面的代码时,我得到了错误的最终块长度错误。我还尝试使用 openssl 命令行工具进行解密,结果出现了错误的幻数错误。有什么建议吗?

标签: rubyencryptionopenssldes

解决方案


尝试切换模式,CBC例如ECB使用OpenSSL::Cipher.new('DES-ECB').

如果您通过查看 来检查您的 Ruby 安装支持哪些密码OpenSSL::Cipher.ciphers,您也会找到可用模式的列表。


推荐阅读