Base64编码的字符串:可以在PHP中解码但无法在Java中解码?

3

可运行的 PHP 代码:

$str = "528ABf4cCU5g7zKzLC2t8oze4mstEcWKErar6FbTK2Xo97bu17S8cDmEg5HlbgcLtfvKCVvJ4FnRV3R1iX1TWZIyM7T2352wsb6LUyqFXA03Fz9G6dQmhRrkWpOXAoHeU/H63LKKzcJDhNb3YI2hfsU20BcT0qkk74XKneC7D91OKY=";
echo strlen(base64_decode($str));

输出结果为130。

不工作的Java代码:

String demo = "528ABf4cCU5g7zKzLC2t8oze4mstEcWKErar6FbTK2Xo97bu17S8cDmEg5HlbgcLtfvKCVvJ4FnRV3R1iX1TWZIyM7T2352wsb6LUyqFXA03Fz9G6dQmhRrkWpOXAoHeU/H63LKKzcJDhNb3YI2hfsU20BcT0qkk74XKneC7D91OKY=";
System.out.println(java.util.Base64.getDecoder().decode(demo).length);

这会抛出异常:

"输入的字节数组结尾不正确" java.lang.IllegalArgumentException。

我该如何让符合PHP要求的base64编码字符串能够被Java解码?

1个回答

6
那个名为demo的输入有错误,padded应该是以==结尾而不是=
你可以使用像Guava的BaseEncoding这样更宽容的解码器。
或者,由于在Base64中填充是可选的,您可以在使用java.util.Base64进行解码之前仅剥离任何尾随的=字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接