我必须用Ruby加密一段文本。为此,我使用了Ruby-Openssl gem。这个加密的文本被传递给一个python程序,我必须使用它来解密它。为此,我使用了Pycrypto。
问题是,在Pycrypto中,我们必须手动指定填充约定。在Ruby中,填充是自动完成的。我使用的是AES-CBC块密码模式。这种填充会导致问题,因为它的剥离无法在Python中正确执行。例如,以下是Ruby和Python语言中的加密文本的base64编码:
Python: aENJY28lvE89yY2T/te8vWwdeoeSqSwwlrOAv7b3AWw=
Ruby: aENJY28lvE89yY2T/te8vVoQE6JNxdSRgYXC8mqF3nI=请帮帮我。
发布于 2011-08-11 16:44:14
默认情况下,OpenSSL应用PKCS#5Padding,因此在AES-CBC模式下使用OpenSSL::Cipher加密数据时,也会自动使用该选项(参见OpenSSL docs)。因此,在使用Ruby时,不需要执行手动填充。
当使用PyCrypto时,填充必须在Python语言中完成manually。
在Python中应用此填充方案后,两个加密的Base64字符串应该匹配。
发布于 2011-08-11 14:11:25
似乎您需要指定在这两种情况下使用的正确填充模式-填充是密码流的基本属性,并且必须在接收方和发送方都匹配。
https://stackoverflow.com/questions/7021410
复制相似问题