ruby-aes默认使用填充吗?

我在RoR项目中使用以下内容:

somepass =Aes.encrypt_buffer(128, 'ECB', some_cypher_key, nil, pain_string)

使用此lib和方法ECB是否默认使用填充?

我最终要做的是拥有一个RoR应用程序,Java应用程序能够使用相同的简单字符串创建相同的加密字符串。

在Java代码中我使用: cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");

这两行代码不会创建相同的加密密钥。

Aes.encrypt_buffer将使用填充,而不是你期望的那种。 它将使用n个字节填充块,并添加字节值。 也就是说,如果它需要添加15个字节,它将填充0x0f ,如果需要添加5个字节,它将填充0x05 。 也就是说,如RFC-5652中所述的PKCS7。

您应该切换到openssl或使用Cipher.getInstance("AES/ECB/PKCS7Padding", "BC")使用Cipher.getInstance("AES/ECB/PKCS7Padding", "BC")