最新消息:请随时分享你的乐趣!

Base64_Hmac_sha1 算法(hmacsha1)

技术博客 磊子 363浏览 0评论

签名校验加密算法

代码

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

/**
 * Base64_Hmac_sha1 算法
 * @author leo
 */
public class HMACSHA1 {

    private static final String MAC_NAME = "HmacSHA1";    
    private static final String ENCODING = "UTF-8";

    /**  
     * 使用 BASE64-HMAC-SHA1 签名方法对对encryptText进行签名  并使用base64 转换为String类型
     * @param encryptText 被签名的字符串  
     * @param encryptKey  密钥  
     * @return  
     * @throws Exception  
     */    
    public static String HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception
    {           
        byte[] data=encryptKey.getBytes(ENCODING);  
        //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
        SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);
        //生成一个指定 Mac 算法 的 Mac 对象
        Mac mac = Mac.getInstance(MAC_NAME);
        //用给定密钥初始化 Mac 对象
        mac.init(secretKey);    

        byte[] text = encryptText.getBytes(ENCODING);
        //完成 Mac 操作
        byte[] hmac = mac.doFinal(text);
        //base64
        return new String(Base64.getEncoder().encode(hmac));
    }


    public static void main(String[] args) {
        try {

            System.out.println("Output: "+HmacSHA1Encrypt("www.cockybook.com","www.cockybook.com"));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}  


测试输出

#Output: BE13r1mdc0pWOv485IBPTr0HKo4=

转载请注明:印迹. » Base64_Hmac_sha1 算法(hmacsha1)

发表我的评论
取消评论

表情