HMAC-SHA1 簽名方法

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;
    }

}
最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容