Java Base64解码返回的垃圾
我正在尝试从Java中的身份验证头解码Base64字符串。我确信正在发送的请求在身份验证标头中具有有效的Base64编码字符串。这是我的解码码:Java Base64解码返回的垃圾,java,string,base64,httprequest,Java,String,Base64,Httprequest,我正在尝试从Java中的身份验证头解码Base64字符串。我确信正在发送的请求在身份验证标头中具有有效的Base64编码字符串。这是我的解码码: HttpServletRequest request = (HttpServletRequest) req; byte[] test = new Base64().decode(request.getHeader("Authorization")); 在我解码请求之前,它看起来是这样的Basic dXNlcjpmZGdmcw== 在我尝试解码后,它看
HttpServletRequest request = (HttpServletRequest) req;
byte[] test = new Base64().decode(request.getHeader("Authorization"));
在我解码请求之前,它看起来是这样的Basic dXNlcjpmZGdmcw==
在我尝试解码后,它看起来是这样的:«“qÕÍ•È™‘™Ì
我不确定我做错了什么,不管我使用什么解码工具,它总是看起来像胡言乱语。谢谢阅读
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
System.out.println(new String(decoder.decodeBuffer("dXNlcjpmZGdmcw==")));
打印用户:fdgfs
。注意:为了获得更好的解决方案。您是否检查了以下人员返回的内容:
request.getHeader("Authorization")
这是因为您试图解码整个字符串“Basic dXNlcjpmZGdmcw==”而不是
“dXNlcjpmZGdmcw==”确保传递给decode()的字符串以dXNl…(而非基本)开头。仅供参考,问题中的字符串显示:“用户:fdgfs“。将其解码为user:fdgfs,因此可能是字节数组到字符串的转换出了问题。我是个白痴,在解码之前没有从字符串中删除Basic,因此它试图解码“Basic dXNlcjpmZGdmcw==”而不是“dXNlcjpmZGdmcw==”请勿在代码中使用未记录的sun.*库。它可能没有下一个版本或不同的JVM实现,并且它可能会在不通知的情况下更改它的接口或规范。记住,如果它是一个私有库,只要我改变我对它的私有依赖关系,我就可以将它重构为我心中的内容。@SoftwareMonkey:你完全正确,这就是为什么我指出问题“寻求更好的解决方案”的链接。实际上,我复制了第一个答案只是为了检查提供的Base64。