【发布时间】:2019-03-20 15:50:10
【问题描述】:
HEX(Base16) 编码字节用 Base64 解码而不抛出异常?如何区分是否只用base16编码器编码?
org.apache.commons.codec.binary.Base64.decodeBase64(bytesencodedwithHex);
当上述方法的字节是十六进制编码数据时,该方法不会抛出任何异常或帮助识别它是十六进制编码的。 甚至 org.apache.commons.codec.binary.Base64.Base64.isBase64(bytesencodedwithHex) 返回 true。
字符串“Hello”下面的示例使用十六进制编码,当我使用 Base64 解码时,它给出了一些废话。在这种情况下,如何让我的客户知道他们使用了错误的解码器? :
System.out.println(new
String(org.bouncycastle.util.encoders.Hex.encode("Hello".getBytes())));
System.out.println(new String(org.bouncycastle.util.encoders.Base64.decode("48656c6c6f".getBytes())));
【问题讨论】:
-
为什么要它抛出异常?十六进制值(例如 '10ab')是合法的 base64 字符串...你能举例说明你的输入吗?
-
感谢@Shir 的回复。我在主要问题中添加了详细信息。