java中多种单向加密算法Word文档格式.docx
- 文档编号:22474796
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:16
- 大小:71.13KB
java中多种单向加密算法Word文档格式.docx
《java中多种单向加密算法Word文档格式.docx》由会员分享,可在线阅读,更多相关《java中多种单向加密算法Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
decryptBASE64(String
key)
throws
{
9.
return
(new
BASE64Decoder()).decodeBuffer(key);
10.}
11.
12./**
13.
BASE64加密
14.
15.
16.
17.
18.
19.public
String
encryptBASE64(byte[]
20.
BASE64Encoder()).encodeBuffer(key);
21.}
主要就是BASE64Encoder、BASE64Decoder两个类,我们只需要知道使用对应的方法即可。
另,BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。
MD5
MD5--message-digestalgorithm5(信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。
校验?
不管文件多大,经过MD5后都能生成唯一的MD5值。
好比现在的ISO校验,都是MD5校验。
怎么用?
当然是把ISO经过MD5后产生MD5的值。
一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。
就是用来验证文件是否一致的。
MD5加密
data
encryptMD5(byte[]
data)
10.
MessageDigest
md5
=
MessageDigest.getInstance(KEY_MD5);
md5.update(data);
12.
md5.digest();
15.}
通常我们不直接使用上述MD5加密。
通常将MD5产生的字节数组交给BASE64再加密一把,得到相应的字符串。
SHA
SHA(SecureHashAlgorithm,安全散列算法),数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。
虽然,SHA与MD5通过碰撞法都被破解了,
但是SHA仍然是公认的安全加密算法,较之MD5更为安全。
1.
/**
SHA加密
8.
public
encryptSHA(byte[]
sha
MessageDigest.getInstance(KEY_SHA);
sha.update(data);
sha.digest();
}
16.}
HMAC
HMAC(HashMessageAuthenticationCode,散列消息鉴别码,基于密钥的Hash算法的认证协议。
消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。
使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。
接收方利用与发送方共享的密钥进行鉴别认证等。
初始化HMAC密钥
7.public
initMacKey()
KeyGenerator
keyGenerator
KeyGenerator.getInstance(KEY_MAC);
SecretKey
secretKey
keyGenerator.generateKey();
encryptBASE64(secretKey.getEncoded());
12.}
14./**
HMAC加密
19.
21.
22.public
encryptHMAC(byte[]
data,
23.
24.
new
SecretKeySpec(decryptBASE64(key),
KEY_MAC);
25.
Mac
mac
Mac.getInstance(secretKey.getAlgorithm());
26.
mac.init(secretKey);
27.
28.
mac.doFinal(data);
29.
30.}
给出一个完整类,如下:
1.import
java.security.MessageDigest;
3.import
javax.crypto.KeyGenerator;
4.import
javax.crypto.Mac;
5.import
javax.crypto.SecretKey;
7.import
sun.misc.BASE64Decoder;
8.import
sun.misc.BASE64Encoder;
10./**
基础加密组件
@author
梁栋
@version
1.0
@since
17.public
abstract
class
Coder
final
KEY_SHA
"
SHA"
;
KEY_MD5
MD5"
22.
MAC算法可选以下多种算法
<
pre>
HmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512
30.
/pre>
31.
32.
KEY_MAC
HmacMD5"
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.}
再给出一个测试类:
org.junit.Assert.*;
org.junit.Test;
5./**
11.public
CoderTest
@Test
void
test()
inputStr
简单加密"
System.err.println("
原文:
\n"
+
inputStr);
inputData
inputStr.getBytes();
code
Coder.encryptBASE64(inputData);
BASE64加密后:
code);
output
Coder.decryptBASE64(code);
outputStr
String(output);
BASE64解密后:
outputStr);
//
验证BASE64加密解密一致性
assertEquals(inputStr,
验证MD5对于同一内容加密是否一致
assertArrayEquals(Coder.encryptMD5(inputData),
.encryptMD5(inputData));
验证SHA对于同一内容加密是否一致
assertArrayEquals(Coder.encryptSHA(inputData),
.encryptSHA(inputData));
Coder.initMacKey();
Mac密钥:
key);
验证HMAC对于同一内容,同一密钥加密是否一致
assertArrayEquals(Coder.encryptHMAC(inputData,
key),
Coder.encryptHMAC(
inputData,
key));
BigInteger
BigInteger(Coder.encryptMD5(inputData));
MD5:
md5.toString(16));
BigInteger(Coder.encryptSHA(inputData));
SHA:
sha.toString(32));
BigInteger(Coder.encryptHMAC(inputData,
inputStr));
HMAC:
mac.toString(16));
56.}
控制台输出:
Console代码
1.原文:
2.简单加密
3.BASE64加密后:
4.566A5Y2V5Yqg5a+G
6.BASE64解密后:
7.简单加密
8.Mac密钥:
9.uGxdHC+6ylRDaik++leFtGwiMbuYUJ6mqHWyhSgF4trVkVBBSQvY/a22xU8XT1RUemdCWW155Bke
10.pBIpkd7QHg==
12.MD5:
13.-550b4d90349ad4629462113e7934de56
14.SHA:
15.91k9vo7p400cjkgfhjh0ia9qthsjagfn
16.HMAC:
17.2287d192387e95694bdbba2fa941009a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 多种 单向 加密算法