纪念SUN
Powered By Andy
MD5初解
1
public
static
String md5(String pwd)
throws
NoSuchAlgorithmException
{
2
3
StringBuilder sb
=
new
StringBuilder();
4
MessageDigest digest
=
MessageDigest.getInstance(
"
md5
"
);
5
byte
[] b
=
digest.digest(pwd.getBytes());
6
//
与16进制进行与
7
//
16 59 1011001
8
//
59>>>4&0xf 101 | 59&0xf 1011001
9
//
&1111 | &00001111
10
//
结果 101 | 00001001
11
//
16进制 5 9
12
for
(
byte
s : b)
{
13
//
左边的四位0101
14
//
sb.append(Character.forDigit(
15
//
((s >>> 4) & 0xf) > 4 ? (s >>> 4) & 0xf ^ 0xe
16
//
: (s >>> 4) & 0xf, 16));
17
sb.append(Character.forDigit((s
>>>
4
)
&
0xf
,
16
));
18
//
右边的四位1001
19
sb.append(Character.forDigit(s
&
0xf
,
16
));
20
}
21
//
所有MD5的生面0-f之间的字母与数字
22
return
sb.toString().toUpperCase();
23
}
posted on 2010-02-25 20:46
Powered By Andy
阅读(253)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2010年2月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
统计
随笔 - 7
文章 - 0
评论 - 0
引用 - 0
常用链接
我的随笔
我的评论
我的参与
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2011年12月 (1)
2011年11月 (1)
2010年3月 (1)
2010年2月 (2)
2010年1月 (1)
搜索
最新评论
阅读排行榜
1. 为什么要关闭和io流(3219)
2. URL编码(1993)
3. JAVA 序列化(1936)
4. 两个变量不通过第三个变量交换值(332)
5. 测试clone(256)
评论排行榜
1. 测试clone(0)
2. 为什么要关闭和io流(0)
3. 两个变量不通过第三个变量交换值(0)
4. MD5初解(0)
5. URL编码(0)