python - 在 Ruby/Python 中使用哪个 AES 库?

标签 python ruby encryption aes

我需要能够在 Ruby 客户端和 Python 服务器之间发送加密数据(反之亦然)并且一直在使用 ruby-aes 时遇到问题 gem /图书馆。该库非常易于使用,但我们在它与 Python 的 pyCrypto AES 库之间传递数据时遇到了问题。当这些库是唯一被使用的库时,它们似乎很好,但它们似乎不能很好地跨语言边界运行。有什么想法吗?

编辑:我们正在通过 SOAP 进行通信,并且还尝试将二进制数据转换为 base64,但无济于事。此外,更重要的是两者之间的加密/解密几乎但不完全相同(例如,长度相差一个或解密字符串末尾有额外的垃圾字符)

最佳答案

(e.g., the lengths differ by one or there is extra garbage characters on the end of the decrypted string)

我错过了那一点。您的加密/解密没有任何问题。这听起来像是一个填充问题。 AES 始终以 128 位的 block 对数据进行编码。如果您的数据长度不是 128 位的倍数,则应在加密前填充数据,并在加密后删除/忽略填充。

关于python - 在 Ruby/Python 中使用哪个 AES 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/196776/

相关文章:

python - 如何在 Python 中运行不可见的子进程?

Python 排序字典列表,其中包含列表

java - AES/CBC/PKCS5Padding 与 AES/CBC/PKCS7Padding 与 256 key 大小性能 java

R:通过 cyphr 加密字符串,发送到 JSON,然后从 JS 转换回字符串会导致问题

python - 如何在 Python Matplotlib 中向雷达图点添加标签

python - 使用 '\' 在正则表达式中匹配特殊字符 '\\' 时出现问题

ruby - 上帝不会阻止 unicorn

ruby - 继承模块/类方法

ruby - 如何在 Ruby 中临时重定向 stderr?

jenkins - jenkins可以ssh到另一个用户,但是pgp仍然认为它是jenkins用户