import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class HmacSHA1 {
/**
* 使用 HMAC-SHA1 签名方法对对encryptText进行签名
* @param encryptText 被签名的字符串
* @param encryptKey 密钥
* @return 返回被加密后的字符串
* @throws Exception
*/
public static String HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception{
byte[] data = encryptKey.getBytes("UTF-8");
// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
SecretKey secretKey = new SecretKeySpec(data, "HmacSHA1");
// 生成一个指定 Mac 算法 的 Mac 对象
Mac mac = Mac.getInstance("HmacSHA1");
// 用给定密钥初始化 Mac 对象
mac.init(secretKey);
byte[] text = encryptText.getBytes("UTF-8");
// 完成 Mac 操作
byte[] finalText = mac.doFinal(text);
StringBuilder sBuilder = bytesToHexString(finalText);
return sBuilder.toString().toUpperCase();
}
/**
* 转换成Hex, 方法1
*
* @param bytesArray
*/
public static StringBuilder bytesToHexString(byte[] bytesArray){
if (bytesArray == null){
return null;
}
StringBuilder sBuilder = new StringBuilder();
for (byte b : bytesArray){
String hv = String.format("%02x", b);
sBuilder.append(hv);
}
return sBuilder;
}
/**
* 转换成Hex, 方法2
*
* @param bytesArray
*/
public static StringBuilder bytesToHexString2(byte[] bytesArray) {
StringBuilder hs = new StringBuilder();
String stmp;
for (int n = 0; bytesArray!=null && n < bytesArray.length; n++) {
stmp = Integer.toHexString(bytesArray[n] & 0XFF);
if (stmp.length() == 1)
hs.append('0');
hs.append(stmp);
}
return hs;
}
}
HMAC-SHA1 签名方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1,点击电脑左下角的开始按钮,点击“运行”,输入cmd,点确定。 2,输入cd C:\Java\jdk1.8\bi...
- 跳转到JDK的bin所在的目录: 例如我的目录为 找到keystore所在的目录: 例如我的debug.keyst...
- 首先说说在JAVA中写了一个NATIVE方法,然后生成头文件的方法 javah -classpath java生在...