Python 使用OpenSSL解密Ruby中的数据
我用Python编写了以下代码,效果很好。它使用mcrypt模块对变量加密的_数据中的数据进行解密。我想在Ruby中执行相同的操作。因此,我需要openssl模块。不幸的是,Ruby版本不起作用。这就是错误:Python 使用OpenSSL解密Ruby中的数据,python,ruby,encryption,openssl,Python,Ruby,Encryption,Openssl,我用Python编写了以下代码,效果很好。它使用mcrypt模块对变量加密的_数据中的数据进行解密。我想在Ruby中执行相同的操作。因此,我需要openssl模块。不幸的是,Ruby版本不起作用。这就是错误: `final': bad decrypt (OpenSSL::Cipher::CipherError) 编辑 我为您创建了一个GitHub存储库来测试这一点。在此处下载源代码: 编辑2 错误解密错误不再出现。我通过设置d.padding=0解决了这个问题。问题是:解密的数据仍然不正确。我
`final': bad decrypt (OpenSSL::Cipher::CipherError)
编辑
我为您创建了一个GitHub存储库来测试这一点。在此处下载源代码:
编辑2
错误解密
错误不再出现。我通过设置d.padding=0
解决了这个问题。问题是:解密的数据仍然不正确。我无法查看图像
如果您需要有关我的系统或任何其他信息,请随时询问。非常感谢您的帮助。谢谢
Python
import base64
import mcrypt
encrypted_data = "placeholder: This is the encrypted data."
key = base64.b64decode("6vYJkO5beHNlwOm+aMqUTTzSpRw9jR3faHqu0wVoAG0=")
iv = base64.b64decode("EbuuKuVF4+DzDbWsvQi/ZA==")
m = mcrypt.MCRYPT("rijndael-128", "cbc")
m.init(key, iv)
decrypted_data = m.decrypt(encrypted_data)
红宝石
require 'base64'
require 'openssl'
encrypted_data = "placeholder: This is the encrypted data."
key = Base64.decode64("6vYJkO5beHNlwOm+aMqUTTzSpRw9jR3faHqu0wVoAG0=")
iv = Base64.decode64("EbuuKuVF4+DzDbWsvQi/ZA==")
d = OpenSSL::Cipher::AES128.new :CBC
d.decrypt
d.padding = 0
d.key = key
d.iv = iv
decrypted_data = d.update(encrypted_data) << d.final
需要“base64”
需要“openssl”
encrypted_data=“占位符:这是加密的数据。”
key=Base64.decode64(“6vYJkO5beHNlwOm+aMqUTTzSpRw9jR3faHqu0wVoAG0=”)
iv=Base64.decode64(“ebuukuv4+DzDbWsvQi/ZA==”)
d=OpenSSL::Cipher::AES128.new:CBC
d、 解密
d、 填充=0
d、 钥匙
d、 iv=iv
decrypted_data=d.update(encrypted_data)我发现Ruby中缺少OpenSSL集成,对于加密工作,通常比mcrypt更麻烦(api更难看/配置上的约定更少)
如果您在python中成功地使用了mcrypt,为什么不在ruby中也使用mcrypt呢
类似于:
require 'rubygems'
require 'mcrypt'
crypto = Mcrypt.new("rijndael-128", :cbc, key, iv)
decrypted_data = crypto.decrypt(encrypted_data)
在你的情况下应该有用
我可以在今天晚些时候或明天继续回答这个问题,首先要做一些旅行解密不是解码。密文包含随机字节,因此不应直接与字符串进行转换。加密的数据源是什么?是Python的吗?@owlstead是的,你说得对!该程序对数据进行加密。我相应地修改了代码。@tsundoku数据是从不同的服务器加载的。我不知道用哪种编程语言来加密数据。为什么这很重要?有两个设置需要调整,例如,如果您将d.padding=0
,从这里开始:您是一个天才!这正是我想要的。你知道mcrypt和openssl之间在性能上是否有差异吗?哈哈,谢谢:)我很高兴这有帮助:)我不知道性能上的差异,但它们都是C绑定的lib,所以mcrypt的性能应该很好。在一个拥有700k用户的实时系统中,我们使用ruby mcrypt对大约1000万条记录进行加密,在性能上没有遇到任何瓶颈