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生在...