java MD5加密,解释解释!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java MD5加密,解释解释!相关的知识,希望对你有一定的参考价值。

class MD5_test
public final static String MD5(String s)
char hexDigits[] = '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ,
'a' , 'b' , 'c' , 'd' , 'e' , 'f' ;
try
byte [] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5" );
mdTemp.update(strTemp);
byte [] md = mdTemp.digest();
int j = md.length;
char str[] = new char [j * 2 ];
int k = 0 ;
for ( int i = 0 ; i < j; i++)
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf ];
str[k++] = hexDigits[byte0 & 0xf ]; 解释一下for循环作用!!!!

return new String(str);
catch (Exception e)
return null ;

给你解释一下for里面这段代码
byte byte0 = md[i];//取得md数组中第i个元素

str[k++] = hexDigits[byte0 >>> 4 & 0xf ];取得byte0的前四位,然后找到转化成16进制字符,如果byte0为10001000(二进制)那么前四位就是1000,十进制就是8,而 hexDigits[8]就=‘8’
str[k++] = hexDigits[byte0 & 0xf ]; //同理取得byte0的后四位,转化成16进制字符。追问

byte [] md = mdTemp.digest();加密之后为什么还要转化为十六进制啊?

追答

因为md是字节类型的数组,而MD5是一串十六进制字符,所以要进行转换的

参考技术A 我也不懂,你会了帮我一下哈!

以上是关于java MD5加密,解释解释!的主要内容,如果未能解决你的问题,请参考以下文章

谁可以告诉我md5加密原理

ios md5加密原理是啥意思

md5 加密,既然无法解密,那这个加密的意义有啥呢? 对文件加密后怎么返回原值呢?

spring项目中使用MD5加密方式

spring项目中使用MD5加密方式

sqlserver 进行MD5加密