我需要解密使用此命令加密的文件:
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命令行工具进行解密,但出现了错误的幻数错误。有什么建议吗?
答案 0 :(得分:1)
尝试使用CBC
将模式从ECB
切换到OpenSSL::Cipher.new('DES-ECB')
。
如果通过查看OpenSSL::Cipher.ciphers
来检查Ruby安装支持的密码,您还将找到可用模式的列表。