java HMAC_SHA1加密算法
CreationTime--2018年7月14日16点46分
Author:Marydon
1.准备工作
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.log4j.Logger;
/**
* HMAC_SHA1加密算法工具类
* @explain 不可逆算法
* @author Marydon
* @creationTime 2018年7月7日上午11:06:58
* @version 1.0
* @since
* @email
*/
public class HMAC_SHA1Utils {
private static Logger log = Logger.getLogger(HMAC_SHA1Utils.
class);
// 加密方法
private static final String MAC_NAME = "HmacSHA1"
;
// 定义字符集
private static final String ENCODING = "UTF-8"
;
}
2.HMAC_SHA1加密
/**
* 使用HMAC_SHA1算法进行加密
* @explain
* @param paramStr
* 待加密字符串
* @param key
* 密钥(长度不限、可以为中文、英文、16进制字符串)
* @return 16进制加密字符串,长度固定为40
* @throws Exception
*/
public static String encrypt(String paramStr, String key) {
// 用于存储加密后的16进制字符串
String cipher = ""
;
try {
//
byte[] data =
key.getBytes(ENCODING);
// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
// 生成HmacSHA1专属密钥
SecretKey secretKey =
new SecretKeySpec(data, MAC_NAME);
// 生成一个指定 Mac 算法 的 Mac 对象
Mac mac =
Mac.getInstance(MAC_NAME);
// 用给定密钥初始化 Mac 对象
mac.init(secretKey);
byte[] text =
paramStr.getBytes(ENCODING);
// 完成 Mac 操作
byte[] encryptByte =
mac.doFinal(text);
// 将byte[]-->hexString
cipher =
ByteUtils.toHex(encryptByte);
} catch (Exception e) {
e.printStackTrace();
log.error("HMACSHA1加密失败:" +
e.getMessage());
}
log.info("HMACSHA1加密结果:" +
cipher);
return cipher;
}
3.校验
/**
* 判断源数据与加密数据是否一致
* @explain
* @param srcStr
* 原字符串
* @param secretStr
* 16进制加密字符串
* @param key
* 密钥
* @return 校验结果
*/
public static boolean verify(String srcStr, String secretStr, String key) {
boolean flag =
false;
String cipherText =
encrypt(srcStr, key);
if (cipherText.equals(secretStr))
flag =
true;
return flag;
}
4.测试
/**
* 测试
* @param args
*/
public static void main(String[] args) {
String json = "{\"name\":\"Marydon\",\"website\":\"http://www.cnblogs.com/Marydon20170307\"}"
;
String key = "测试"
;
String cipher =
HMAC_SHA1Utils.encrypt(json, key);
System.out.println(cipher);
System.out.println(HMAC_SHA1Utils.verify(json, cipher, key));
}
相关推荐:
java AES加密、解密java sm3加密算法实现java sm4国密算法加密、解密
转载于:https://www.cnblogs.com/Marydon20170307/p/9310685.html
相关资源:Java HMAC SHA1