java加密算法--MD5加密和哈希散列帶秘鑰加密算法源碼
更新時間:2016年11月28日 14:50:21 投稿:lqh
這篇文章主要介紹了java加密算法--MD5加密和哈希散列帶秘鑰加密算法源碼的相關(guān)資料,這里附實例代碼,幫助到大家學(xué)習(xí)理解,需要的朋友可以參考下
java加密算法--MD5加密和哈希散列帶秘鑰加密算法源碼
最近學(xué)習(xí)加密算法的知識,利用MD5 加密,百度一下網(wǎng)上資料很多,不是很詳細(xì),這里就整理下如何實現(xiàn)用MD5加密和 哈希散列帶秘鑰加密算法,大家可以看下。
實現(xiàn)代碼:
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();
// 字節(jié)數(shù)組轉(zhuǎn)換為 十六進制 數(shù)
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 "";
}
}
// 測試主函數(shù)
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));
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Java使用get請求接收List集合數(shù)據(jù)(json)并導(dǎo)出報表問題
這篇文章主要介紹了Java使用get請求接收List集合數(shù)據(jù)(json)并導(dǎo)出報表問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
SpringCloud Gateway自動裝配實現(xiàn)流程詳解
Spring Cloud Gateway旨在為微服務(wù)架構(gòu)提供一種簡單有效的、統(tǒng)一的 API 路由管理方式。Spring Cloud Gateway 作為 Spring Cloud 生態(tài)系中的網(wǎng)關(guān),它不僅提供統(tǒng)一的路由方式,并且基于 Filter 鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點和限流等2022-10-10

