JAVA的md5解密后怎么是乱码,问题出在哪里啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA的md5解密后怎么是乱码,问题出在哪里啊相关的知识,希望对你有一定的参考价值。
像12345678加密后成这样%�Z҃�@
�d�mq<�
ヌmq<ュ
这个很正常。加密是将字节按照一定的规则进行了转换,转换后出什么样的怪字符都是正常的。
一般的做法是将加密后的byte数组转换为十六进制的字符串。
---------------------------------------------------------------------------------------------------------
import java.security.MessageDigest;
public class Main
public static void main(String[] args) throws Exception
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] b = md.digest("12345678".getBytes());
System.out.println(new String(b));
String result = "";
for (int i = 0; i < b.length; i++)
String tmp = Integer.toHexString(b[i] & 0xFF);
if (tmp.length() == 1)
result += "0" + tmp;
else
result += tmp;
System.out.println(result);
运行结果
-------------------------------
%ユZメΜ@
ヌmq<ュ
25d55ad283aa400af464c76d713c07ad 参考技术A 这个很正常,要是想要显示的不是这样的话,可以在MD5处理的时候不做hash处理,然后将MD5后的值进行BASE64处理 参考技术B MD5是单向加密 不能解密
加密后应该是散列码 如果出现乱码的话……看看你的字符集是不是有问题追问
写了一个加密的工具类,用JUNIT测试的时候就出上面的那种乱码
追答很难说具体的情况,在没有代码的情况下……
不行就换个代码
MD5是怎么加密的?
1、要有md5加密函数2、使用这个函数
比如b/s程序 md5一般都是一个文件
需要用到md5的函数的时候 include这个文件
还是 md5(password,16) 就是调用这个函数 password是 变量名16 加密长度 参考技术A MD5 不是加密,是单向散列值计算。MD5 是国际通用的散列函数,在应用上不可破解。 参考技术B 说作加密也没错吧,上次好像说中国人找到了MD5的什么冲突情况啊,就是离破解不远了
以上是关于JAVA的md5解密后怎么是乱码,问题出在哪里啊的主要内容,如果未能解决你的问题,请参考以下文章
md5 加密,既然无法解密,那这个加密的意义有啥呢? 对文件加密后怎么返回原值呢?