我正在尝试对我的字符串键执行base64解码,但每次返回不同长度的字节数组。它是有效的,还是可以返回固定字节长度为32?
private byte[] base64DecodeOfKey(String keyval)
throws JingEncryptionException {
try {
return new sun.misc.BASE64Decoder().decodeBuffer(keyval);
} catch (IOException e) {
throw new JingEncryptionException(e.getMessage());
}
}
测试用例:
byte[] decodeBufferrrrrrr;
decodeBufferrrrrrr = new Base64().decode("=======================");
System.out.println("decode:::::::"+decodeBufferrrrrrr);
String encdata = new Base64().encodeAsString(decodeBufferrrrrrr);
System.out.println("Encode:::"+encdata);
输出:
decode:::::::[B@535b58
Encode:::
答案 0 :(得分:0)
Base 64解码是确定性的:相同的输入应始终产生相同的输出。因此对于base 64,相同的base 64字符串应始终返回相同的字节数组。
问题可能在于输入,而不在于功能。请注意,您永远不应使用sun
内部类 - API和实现可能随时更改。使用Guava,Apache Commons Codec或内部Bouncy Castle编解码器。
答案 1 :(得分:-1)
得到问题的解决方案,最好的方法是将其转换为UTF-8,二进制格式。作为" *","?"的ASCII表示。等等是未知的。