java加密解密之消息摘要算法md5shamacWord文档格式.docx

上传人:b****5 文档编号:19943506 上传时间:2023-01-12 格式:DOCX 页数:9 大小:22.33KB
下载 相关 举报
java加密解密之消息摘要算法md5shamacWord文档格式.docx_第1页
第1页 / 共9页
java加密解密之消息摘要算法md5shamacWord文档格式.docx_第2页
第2页 / 共9页
java加密解密之消息摘要算法md5shamacWord文档格式.docx_第3页
第3页 / 共9页
java加密解密之消息摘要算法md5shamacWord文档格式.docx_第4页
第4页 / 共9页
java加密解密之消息摘要算法md5shamacWord文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

java加密解密之消息摘要算法md5shamacWord文档格式.docx

《java加密解密之消息摘要算法md5shamacWord文档格式.docx》由会员分享,可在线阅读,更多相关《java加密解密之消息摘要算法md5shamacWord文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

java加密解密之消息摘要算法md5shamacWord文档格式.docx

③一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;

但相同的输入必会产生相同的输出。

④消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,乃至根本就找不到任何与原信息相关的信息。

⑤好的摘要算法,无法找到两条消息,是它们的摘要相同。

现有的消息摘要算法

消息摘要算法包括MD、SHA和MAC三大系列,常常利用于验证数据的完整性,是数据签名算法的核心算法。

MAC与MD和SHA不同,MAC是含有密钥的散列函数算法,咱们也常把MAC称为HMAC。

JDK对消息摘要算法的支持

JDK6支持MD2/MD5/SHA/SHA256/SHA384/SHA512/HmacMD5/HmacSHA1/HmacSHA256/HmacSHA384/HmacSHA512

利用到 

十六进制工具类 

见:

javabyte数组与十六进制字符串互转

MD和SHA系列的java实现:

Java代码 

1.import 

2.import 

3./** 

4. 

reference 

apache 

commons 

<

5. 

href="

"

>

6. 

7. 

support 

MD2/MD5/SHA/SHA256/SHA384/SHA512 

8. 

@author 

Aub 

9. 

10. 

*/ 

11.public 

class 

DigestUtils 

12. 

/** 

13. 

按照给定摘要算法创建一个消息摘要实例 

14. 

15. 

@param 

algorithm 

16. 

摘要算法名 

17. 

@return 

消息摘要实例 

18. 

@see 

MessageDigest#getInstance(String) 

19. 

@throws 

RuntimeException 

20. 

当 

{@link 

发生时 

21. 

22. 

static 

MessageDigest 

getDigest(String 

algorithm) 

23. 

try 

24. 

return 

(algorithm);

25. 

catch 

(NoSuchAlgorithmException 

e) 

26. 

throw 

new 

RuntimeException());

27. 

28. 

29. 

30. 

获取 

MD5 

31. 

32. 

33. 

34. 

35. 

36. 

private 

getMd5Digest() 

37. 

getDigest("

MD5"

);

38. 

39. 

40. 

SHA-1 

41. 

42. 

43. 

44. 

45. 

46. 

getShaDigest() 

47. 

SHA"

48. 

49. 

50. 

SHA-256 

51. 

52. 

53. 

54. 

55. 

56. 

getSha256Digest() 

57. 

SHA-256"

58. 

59. 

60. 

SHA-384 

61. 

62. 

63. 

64. 

65. 

66. 

getSha384Digest() 

67. 

SHA-384"

68. 

69. 

70. 

SHA-512 

71. 

72. 

73. 

74. 

75. 

76. 

getSha512Digest() 

77. 

SHA-512"

78. 

79. 

80. 

利用MD5消息摘要算法计算消息摘要 

81. 

82. 

data 

83. 

做消息摘要的数据 

84. 

消息摘要(长度为16的字节数组) 

85. 

86. 

public 

byte[] 

encodeMD5(byte[] 

data) 

87. 

getMd5Digest().digest(data);

88. 

89. 

90. 

91. 

92. 

93. 

94. 

消息摘要(长度为32的十六进制字符串) 

95. 

96. 

String 

encodeMD5Hex(byte[] 

97. 

(encodeMD5(data));

98. 

99. 

100. 

利用SHA-1消息摘要算法计算消息摘要 

101. 

102. 

103. 

104. 

SHA-1消息摘要(长度为20的字节数组) 

105. 

106. 

encodeSHA(byte[] 

107. 

getShaDigest().digest(data);

108. 

109. 

110. 

111. 

112. 

113. 

114. 

SHA-1消息摘要(长度为40的十六进制字符串) 

115. 

116. 

encodeSHAHex(byte[] 

117. 

(getShaDigest().digest(data));

118. 

119. 

120. 

利用SHA-256消息摘要算法计算消息摘要 

121. 

122. 

123. 

124. 

SHA-256消息摘要(长度为32的字节数组) 

125. 

126. 

encodeSHA256(byte[] 

127. 

getSha256Digest().digest(data);

128. 

129. 

130. 

131. 

132. 

133. 

134. 

SHA-256消息摘要(长度为64的十六进制字符串) 

135. 

136. 

encodeSHA256Hex(byte[] 

137. 

(encodeSHA256(data));

138. 

139. 

140. 

利用SHA-384消息摘要算法计算消息摘要 

141. 

142. 

143. 

144. 

SHA-384消息摘要(长度为43的字节数组) 

145. 

146. 

encodeSHA384(byte[] 

147. 

getSha384Digest().digest(data);

148. 

149. 

150. 

151. 

152. 

153. 

154. 

SHA-384消息摘要(长度为86的十六进制字符串) 

155. 

156. 

encodeSHA384Hex(byte[] 

157. 

(encodeSHA384(data));

158. 

159. 

160. 

利用SHA-512消息摘要算法计算消息摘要 

161. 

162. 

163. 

164. 

SHA-512消息摘要(长度为64的字节数组) 

165. 

166. 

encodeSHA512(byte[] 

167. 

getSha512Digest().digest(data);

168. 

169. 

170. 

171. 

172. 

173. 

174. 

SHA-512消息摘要(长度为128的十六进制字符串) 

175. 

176. 

encodeSHA512Hex(byte[] 

177. 

(encodeSHA512(data));

178. 

179.} 

参考 

下载地址:

系列的java实现

3.import 

4.import 

5.import 

6.import 

7.import 

8./** 

Hmac<

br/>

HmacMD5/HmacSHA/HmacSHA256/HmacSHA384/HmacSHA512 

11. 

13.public 

Hmac 

按照给定密钥生成算法创建密钥 

密钥算法 

密钥 

getHmacKey(String 

algorithm){ 

ppend("

"

()-1);

("

}"

();

void 

main(String[] 

args) 

31.ength());

Mac数据"

;

加密前数据:

string:

+data);

byte[]:

+showByteArray()));

36.ength());

加密后数据:

+;

hexStr:

+(encodeData));

41.} 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1