Ruby-OpenSSL,PyCrypto之间的AES加密/解密

vis*_*618 5 ruby python pycrypto

我必须使用Ruby加密一段文本.我已经将Ruby-Openssl gem用于此目的.这个加密的文本被传递给python程序,我必须使用它解密它.我已经将Pycrypto用于此目的.

问题是,在Pycrypto中我们必须手动指定填充约定.在Ruby中,填充是自动完成的.我正在使用AES-CBC分组密码模式.这种填充会导致问题,因为它的剥离无法在Python中正确执行.例如,这些是Ruby和Python中加密文本的base64编码:

Python: aENJY28lvE89yY2T/te8vWwdeoeSqSwwlrOAv7b3AWw=
Ruby:   aENJY28lvE89yY2T/te8vVoQE6JNxdSRgYXC8mqF3nI=
Run Code Online (Sandbox Code Playgroud)

请帮忙...

emb*_*oss 3

OpenSSL 默认情况下应用 PKCS#5Padding,因此在 AES-CBC 模式下加密数据时也会自动使用它OpenSSL::Cipher(参见 OpenSSL文档)。因此,使用 Ruby 时无需执行手动填充。

使用 PyCrypto 时,必须在 Python 中手动完成填充。

在 Python 中应用此填充方案后,两个加密的 Base64 字符串应该匹配。