我在我的电脑上搭建了本地restAPI服务器,并且我有注册功能,将用户数据发送到mySQL数据库。
我已将密码字符串编码为 base64 字符串(想尝试加密我自己)。 当我尝试解码从数据库获取的密码时,我得到错误的输出。
密码例如(base64):MDQ1MTA0NTE=
这将输出 - 04510451
解码器类 -
byte[] decodedValue = Base64.getDecoder().decode(password);
return new String(decodedValue, StandardCharsets.UTF_8);
编码器类 -
byte[] passEncoded = Base64.getEncoder().encode(password.getBytes("UTF-8"));
System.out.println("encoded value is " + new String(passEncoded));
String finalPass = null;
finalPass = new String(passEncoded, "UTF-8");
return finalPass;
现在我得到的实际输出:“֎u֎u”(需要是04510451)
提前致谢, 乔纳森
最佳答案
看起来您正在解码两次。这在您提供的代码片段中不可见,但这是最合乎逻辑的解释:
MDQ1MTA0NTE=
-> 04510451
-> َuَu
关于java - Base64解码,使用UTF-8、UTF-16输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53914913/