欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2022-04-21 09:45:12|栏目:JAVA代码|点击:

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;

/**
* 采用MD5加密 
* 
* @author zhangcd
* @date 2016-4-29
*/
public class EncryptUtil { 

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

/*** 
* MD5加码 生成32位md5码 
*/ 
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(); 

} 

/*** 
* MD5加密 生成32位md5码 
*/ 
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; 

} 

/** 
* HMAC-SHA1 
* @param encryptText 
* @param encryptKey 
* @return 
* @throws Exception 
*/ 
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));
} 
}

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

上一篇:Java日常练习题,每天进步一点点(26)

栏    目:JAVA代码

下一篇:Docker使用 Maven 插件构建镜像的方法

本文标题:java加密算法--MD5加密和哈希散列带秘钥加密算法源码

本文地址:http://www.codeinn.net/misctech/199768.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有