Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Base64解码返回的垃圾_Java_String_Base64_Httprequest - Fatal编程技术网

Java 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== 在我尝试解码后,它看

我正在尝试从Java中的身份验证头解码Base64字符串。我确信正在发送的请求在身份验证标头中具有有效的Base64编码字符串。这是我的解码码:

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。