java加密技术一(单向加密算法)
2016-07-06 11:28
423 查看
</pre>java加密之单向加密算法:MD5,SHA,HMAC。<p></p><p>一、MD5加密算法:</p><p></p><pre code_snippet_id="1747607" snippet_file_name="blog_20160706_2_8502972" name="code" class="java">/** * MD5加密算法 * * @param data 要加密的数据 */ public static byte[] MD5Encrypt(byte[] data) { byte[] b = null; try { MessageDigest md = MessageDigest.getInstance(“MD5”); md.update(data); b = md.digest(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return b; }
二、SHA加密算法
/** * SHA加密算法 * * @param data 要加密的数据 */ public static byte[] SHAEncrypt(byte[] data) { byte[] b = null; try { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(data); b = md.digest(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return b; }三、HMAC加密算法
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。
3.1、初始化秘钥
/** * 初始化HMAC秘钥 * * @return */ public static String iniHMACKey() { String key = ""; try { KeyGenerator keyGenerator = KeyGenerator.getInstance(HMAC_KEY); SecretKey secretKey = keyGenerator.generateKey(); BASE64Encoder encoder = new BASE64Encoder(); key = encoder.encode(secretKey.getEncoded()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return key; }3.2、用HMAC的秘钥对数据进行加密
/** * * @param data 加密数据 * @param key 秘钥 * @return */ public static byte[] HMACEncrypt(byte[] data, String key) { SecretKey secretKey = new SecretKeySpec(BASE64D(key), HMAC_KEY); byte[] b = null; try { Mac mac = Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); b = mac.doFinal(data); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } return b; }
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- asp MD5加密方式使用建议
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C语言压缩文件和用MD5算法校验文件完整性的实例教程
- C++实现一维向量旋转算法