java - Base64解码,使用UTF-8、UTF-16输出不正确

标签 java mysql spring utf-8 base64

我在我的电脑上搭建了本地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/

相关文章:

java - Spring 多路径变量

php - 如何获取json数组并插入数据库。 php

java - 使用java获取一条记录的多个连接VS获取Mysql中所有记录的一个连接

java - 尝试使用 CORS 时出现 403(禁止访问)

java - 从单个主机注册 Spring Boot Eureka 客户端的多个实例

java - Java 调用 apache 的 xml-rpc 客户端后获取 XML 和 JSON 结果时出错 - 意外的非空白字符数据

java - 使用 Wea​​kReference 进行本地引用是个好主意吗?

ldap - 我如何在 J2SE 中使用 Novell eDirectory 服务?

MYSQL,需要所有日期和第一个日期的列表

java - HTTP 状态 404 : The requested resource is not available/Tomcat7