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")
。