使用Ruby加密的AES-256-CBC在使用Java解密时出现填充错误

使用Ruby加密的AES-256-CBC在使用Java解密时出现填充错误,java,ruby,encryption,cryptography,aes,Java,Ruby,Encryption,Cryptography,Aes,我使用以下代码加密一段文本: require 'openssl' require 'base64' aes = OpenSSL::Cipher::AES256.new(:CBC) ase.encrypt aes.key = ... encrypted_text = aes.update('text to encrypt') + ase.final Base64.encode64(encrypted_text) 问题是:在Java中对加密文本进行解密时,会出现以下错误: 使用填充密码

我使用以下代码加密一段文本:

require 'openssl'
require 'base64'


aes = OpenSSL::Cipher::AES256.new(:CBC)

ase.encrypt

aes.key = ...

encrypted_text = aes.update('text to encrypt') + ase.final

Base64.encode64(encrypted_text)
问题是:在Java中对加密文本进行解密时,会出现以下错误:

使用填充密码解密时,输入长度必须是16的倍数

我可以在Ruby中设置加密的填充,即使我这样做了,但错误仍然是一样的

注意:我没有访问Java代码的权限。我可以访问用Java编写的API,我需要将RubyonRails代码连接到该API

编辑:


我通过运行Ruby脚本获得的加密文本:
xJG4s8/xqBJ/S+AlHu3mQ/sb6V5QYx+yDkdGdaK5wq9C7CQZa/+UPsB8C3MH\nXoLl\n

您能提供一个由上述代码生成的密文示例吗?@LukePark Sure。我已经更新了我的问题,,,等等,从Ruby base64编码器的输出中删除换行符,或者改用
base64.strict\u encode64()
。base64加密数据中包含换行符:
\n
,这对于base64加密数据来说不是一个好主意,使用一个不添加行分隔符的选项来进行Base64编码。你能举一个由上述代码生成的密文的例子吗?@LukePark Sure。我已经更新了我的问题,,,等等,从Ruby base64编码器的输出中删除换行符,或者改用
base64.strict\u encode64()
。base64加密数据中包含换行符:
\n
,这对于base64加密数据来说不是一个好主意,使用一个选项,该选项不添加行分隔符whrn Base64编码。