ruby - 如何解密在 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 命令行工具进行解密,结果出现了错误的幻数错误。有什么建议吗?
解决方案
尝试切换模式,CBC
例如ECB
使用OpenSSL::Cipher.new('DES-ECB')
.
如果您通过查看 来检查您的 Ruby 安装支持哪些密码OpenSSL::Cipher.ciphers
,您也会找到可用模式的列表。
推荐阅读
- django - gunicorn 和 Django 项目
- nginx - 运行 Nginx ./configure 时,Ansible playbook 挂起
- swift - 从 github 克隆后 Xcode 项目工作区丢失文件
- wordpress - 自定义古腾堡块自动包装
- c# - 如何在 C# 中使用 3rd 方 DLL
- .net - 运行 Jenkins 的 Docker 容器中的 Dotnet 构建权限被拒绝
- azure - VSTS/Azure DevOps 在“npm install”上失败
- excel - VBA:将 Excel 工作表复制到另一个工作簿中
- apache-nifi - NiFi - 更改文件名(CSV)从传入的 JSON 添加属性
- neo4j - Neo4J - 将 3 个合并查询优化为单个查询