俊星的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模式(轉)(8032)
2.?JAVA圖像縮放處理(4181)
3.?Nutz初步試用(4109)
4.?Window下FTP命令使用(3519)
5.?freetts初探(3430)
6.?ActiveMQ初探(2906)
7.?MYSQL Access denied 問題的解決(2345)
8.?HTTP Client及HTTPS初探(1990)
9.?JAVA單向加密(MD5,SHA,MAC)(1266)
10.?CAS認證初探(1155)
評論排行榜
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
俊星
閱讀(1266)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © 俊星
主站蜘蛛池模板:
阿瓦提县
|
三亚市
|
嘉义市
|
台南市
|
莱州市
|
兴城市
|
绥滨县
|
红原县
|
施秉县
|
于田县
|
墨江
|
康马县
|
营山县
|
灵川县
|
中牟县
|
清新县
|
淄博市
|
南开区
|
城口县
|
法库县
|
渝中区
|
兰西县
|
曲松县
|
翼城县
|
屏南县
|
荆州市
|
墨玉县
|
金秀
|
荣成市
|
丹江口市
|
伊吾县
|
白银市
|
顺平县
|
鸡泽县
|
右玉县
|
和田县
|
望谟县
|
肥城市
|
新绛县
|
于田县
|
荣成市
|