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");
// 根據(jù)給定的字節(jié)數(shù)組構(gòu)造一個密鑰,第二參數(shù)指定一個密鑰算法的名稱
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();
}
/**
* 轉(zhuǎn)換成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;
}
/**
* 轉(zhuǎn)換成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 簽名方法
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 1,點擊電腦左下角的開始按鈕,點擊“運行”,輸入cmd,點確定。 2,輸入cd C:\Java\jdk1.8\bi...
- 跳轉(zhuǎn)到JDK的bin所在的目錄: 例如我的目錄為 找到keystore所在的目錄: 例如我的debug.keyst...
- Java方法簽名 Java的方法簽名不包括返回值。 Java的方法簽名包括:方法名和參數(shù)。不包括方法返回值。所以由...
- 首先說說在JAVA中寫了一個NATIVE方法,然后生成頭文件的方法 javah -classpath java生在...
- 首先我們打開Mac的終端,進入終端后直接輸入cd .android進入文件夾,接著輸入命令keytool -...