这段MD5加密算法是什么意思,谁能帮我解释下?不会JAVA看不懂。。。求逐行注解下。越通俗越好。谢谢

packagecom.util;/***MD5密码加密类**/importjava.security.*;importjava.security.spec.*;publi... package com.util;
/**
*MD5密码加密类
*
*/

import java.security.*;
import java.security.spec.*;
public final class MD5 {

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];
}
return new String(str);
}
catch (Exception e){
return null;
}
}
}
展开
 我来答
登山采蘑菇
推荐于2017-11-25
知道答主
回答量:39
采纳率:100%
帮助的人:20.2万
展开全部
package com.util; // 包名
/**
*MD5密码加密类
*
*/

import java.security.*; // 引入java.security包下的所有类
import java.security.spec.*;
public final class MD5 { // 命名类

public final static String MD5(String s){ // 静态 final 方法
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
'e', 'f'}; // char类型数组,变量名为hexDigits
try {
byte[] strTemp = s.getBytes(); // 把参数 s 转换成byte类型数组
MessageDigest mdTemp = MessageDigest.getInstance("MD5"); // 得到一个MessageDigest 类型的变量mdTemp,提供

信息摘要算法的功能
mdTemp.update(strTemp); // 更新摘要
byte[] md = mdTemp.digest(); // 这个方法应该是加密后返回的byte数组
int j = md.length; // 记录md的长度
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]; // hexDigits 数组中对应的十六进制数放入str中
str[k++] = hexDigits[byte0 & 0xf]; // 有高人吗?再解释一下?
}
return new String(str); // 返回加密后的字符串
}
catch (Exception e){
return null; // 如果有异常返回null
}
}
}
刘维毅
2013-04-08
知道答主
回答量:32
采纳率:0%
帮助的人:17.6万
展开全部
@pete_geng,我再补充两句:
1.hexDigits长度是16需要注意,这也是利用0xf的原因[十六进制]即[1111]二进制表示;
2.hexDigits[byte0 >>> 4 & 0xf] ,byte0无符右移4位,取与获得高四位(<=15),
同理hexDigits[byte0 & 0xf]获取低四位,这也是char str[] = new char[j * 2];的原因,
这两条语句其实是进行加噪音.
Any comments are welcome! Thanks!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式