栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java加密算法--MD5加密和哈希散列带秘钥加密算法源码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java加密算法--MD5加密和哈希散列带秘钥加密算法源码

java加密算法--MD5加密和哈希散列带秘钥加密算法源码

             最近学习加密算法的知识,利用MD5 加密,百度一下网上资料很多,不是很详细,这里就整理下如何实现用MD5加密和 哈希散列带秘钥加密算法,大家可以看下。

实现代码:

package com.ompa.common.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;


public class EncryptUtil { 

private static final String MAC_NAME = "HmacSHA1"; 
private static final String ENCODING = "UTF-8"; 
private static final String key = "iloveyou";

 
public static String string2MD5(String inStr){ 
MessageDigest md5 = null; 
try{ 
md5 = MessageDigest.getInstance("MD5"); 
}catch (Exception e){ 
System.out.println(e.toString()); 
e.printStackTrace(); 
return ""; 
} 
char[] charArray = inStr.toCharArray(); 
byte[] byteArray = new byte[charArray.length]; 

for (int i = 0; i < charArray.length; i++) 
byteArray[i] = (byte) charArray[i]; 
byte[] md5Bytes = md5.digest(byteArray); 
StringBuffer hexValue = new StringBuffer(); 
for (int i = 0; i < md5Bytes.length; i++){ 
int val = ((int) md5Bytes[i]) & 0xff; 
if (val < 16) 
hexValue.append("0"); 
hexValue.append(Integer.toHexString(val)); 
} 
return hexValue.toString(); 

} 

 
public static String stringMD5(String inStr){ 
return string2MD5(string2MD5(inStr)); 

}

 
public static String convertMD5(String inStr){ 

char[] a = inStr.toCharArray(); 
for (int i = 0; i < a.length; i++){ 
a[i] = (char) (a[i] ^ 't'); 
} 
String s = new String(a); 
return s; 

} 

 
public static String HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception 
{ 
byte[] data=encryptKey.getBytes(ENCODING); 
SecretKey secretKey = new SecretKeySpec(data, MAC_NAME); 
Mac mac = Mac.getInstance(MAC_NAME); 
mac.init(secretKey); 

byte[] text = encryptText.getBytes(ENCODING); 
byte[] str = mac.doFinal(text);
// Create Hex String
StringBuffer hexString = new StringBuffer();
// 字节数组转换为 十六进制 数
for (int i = 0; i < str.length; i++) {
String shaHex = Integer.toHexString(str[i] & 0xFF);
if (shaHex.length() < 2) {
hexString.append(0);
}
hexString.append(shaHex);
}
return hexString.toString();
} 

public static String convertSHA1(String instr){
try {
return HmacSHA1Encrypt(instr,key);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}

// 测试主函数 
public static void main(String args[]) throws Exception { 
//哈希散列带秘钥加密
String tt = convertSHA1("123456");
System.out.println(tt);

//MD5加密
String s = new String("123456"); 
System.out.println("原始:" + s); 
System.out.println("MD5后:" + string2MD5(s)); 
System.out.println("MD5加密后:" + stringMD5(s));
} 
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/148556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号