俊星的BLOG
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2009年6月
>
日
一
二
三
四
五
六
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
29
30
1
2
3
4
5
6
7
8
9
10
11
统计
随笔 - 50
文章 - 0
评论 - 6
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
代码库(7)
(rss)
随笔档案
2010年11月 (3)
2010年10月 (12)
2009年6月 (5)
2009年5月 (22)
2009年4月 (8)
最新随笔
1. 实现变更统计
2. 切换IE8中碰到的问题
3. 发布FWMS
4. ActiveMQ初探
5. CAS初步配置
搜索
最新评论
1. re: JAVA图像缩放处理[未登录]
不错的方法
--test
2. re: freetts初探
学习了! 就是不清楚为啥在eclipse下跑不起来...
--apiao
3. re: freetts初探
System property "mbrola.base" is undefined. Will not use MBROLA voices.
这个问题怎么解决啊?
--珑儿
4. re: ActiveMQ初探
测试通过。多谢
--71569973
5. 登录网站
评论内容较长,点击标题查看
--ahome
阅读排行榜
1. ftp的port和pasv模式(转)(8025)
2. JAVA图像缩放处理(4175)
3. Nutz初步试用(4105)
4. Window下FTP命令使用(3509)
5. freetts初探(3409)
6. ActiveMQ初探(2900)
7. MYSQL Access denied 问题的解决(2341)
8. HTTP Client及HTTPS初探(1985)
9. JAVA单向加密(MD5,SHA,MAC)(1263)
10. CAS认证初探(1148)
评论排行榜
1. freetts初探(2)
2. HTTP Client及HTTPS初探(2)
3. ActiveMQ初探(1)
4. JAVA图像缩放处理(1)
5. 我的DWR之DefaultContainer(0)
JAVA单向加密(MD5,SHA,MAC)
具体代码如下:
import
java.security.MessageDigest;
import
javax.crypto.KeyGenerator;
import
javax.crypto.Mac;
import
javax.crypto.SecretKey;
import
javax.crypto.spec.SecretKeySpec;
import
sun.misc.BASE64Decoder;
import
sun.misc.BASE64Encoder;
/** */
/**
* 加密(主要有:MD4,SHA,MAC)
*
*
@author
kinkding
* @history 2009-6-3
*/
public
class
MyEncrypt
{
/** */
/**
MD5 加密
*/
public
static
byte
[] encryptMD5(
byte
[] data)
throws
Exception
{
MessageDigest md5
=
MessageDigest.getInstance(
"
MD5
"
);
md5.update(data);
return
md5.digest();
}
/** */
/**
SHA 加密
*/
public
static
byte
[] encryptSHA(
byte
[] data)
throws
Exception
{
MessageDigest sha
=
MessageDigest.getInstance(
"
SHA
"
);
sha.update(data);
return
sha.digest();
}
/** */
/**
取得HMAC密钥
*/
public
static
String getMacKey()
throws
Exception
{
KeyGenerator keyGenerator
=
KeyGenerator.getInstance(
"
HmacMD5
"
);
SecretKey secretKey
=
keyGenerator.generateKey();
return
new
BASE64Encoder().encode(secretKey.getEncoded());
}
/** */
/**
执行加密
*/
public
static
byte
[] encryptHMAC(
byte
[] data, String key)
throws
Exception
{
byte
[] bkey
=
new
BASE64Decoder().decodeBuffer(key);
SecretKey secretKey
=
new
SecretKeySpec(bkey,
"
HmacMD5
"
);
Mac mac
=
Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return
mac.doFinal(data);
}
private
static
String toHex(
byte
[] buffer)
{
StringBuffer sb
=
new
StringBuffer(buffer.length
*
3
);
for
(
int
i
=
0
; i
<
buffer.length; i
++
)
{
sb.append(Character.forDigit((buffer[i]
&
0xf0
)
>>
4
,
16
));
sb.append(Character.forDigit(buffer[i]
&
0x0f
,
16
));
}
return
sb.toString();
}
public
static
void
main(String[] args)
{
String msg
=
"
生活真好^_^
"
;
byte
[] data
=
msg.getBytes();
try
{
System.out.println(
"
msg:
"
+
msg);
System.out.println(
"
md5:
"
+
toHex(encryptMD5(data)));
System.out.println(
"
sha:
"
+
toHex(encryptSHA(data)));
String key
=
getMacKey();
System.out.println(
"
mac key:
"
+
key);
System.out.println(
"
mac:
"
+
toHex(encryptHMAC(data, key)));
}
catch
(Exception e)
{
e.printStackTrace();
}
}
}
运行效果如下:
msg:生活真好^_^
md5:e0649dfaef57789734e920c7ecb9c4ea
sha:a4bd855836de26b2323778b797629fed4416f12f
mac key:zBPe28oho2H84+Mg8mF4abpd0MQvdjgqgFdX4hmUQQbOGnX1aFq/oQnogsHVIczgx1AZ1s2/ncPz
tBQIGLZUnw
==
mac:87f4140161ad43797059e85dd9962897
posted on 2009-06-03 23:20
俊星
阅读(1263)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 俊星