標籤:public tin static 字串 字元 article http trace err
java HMAC_SHA1密碼編譯演算法CreationTime--2018年7月14日16點46分Author:Marydon1.準備工作
import javax.crypto.Mac;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import org.apache.log4j.Logger;/** * HMAC_SHA1密碼編譯演算法工具類 * @explain 無法復原演算法 * @author Marydon * @creationTime 2018年7月7日上午11:06:58 * @version 1.0 * @since * @email */public class HMAC_SHA1Utils { private static Logger log = Logger.getLogger(HMAC_SHA1Utils.class); // 加密方法 private static final String MAC_NAME = "HmacSHA1"; // 定義字元集 private static final String ENCODING = "UTF-8";}2.HMAC_SHA1加密
/** * 使用HMAC_SHA1演算法進行加密 * @explain * @param paramStr * 待加密字串 * @param key * 密鑰(長度不限、可以為中文、英文、16進位字串) * @return 16進位加密字串,長度固定為40 * @throws Exception */public static String encrypt(String paramStr, String key) { // 用於儲存加密後的16進位字串 String cipher = ""; try { // byte[] data = key.getBytes(ENCODING); // 根據給定的位元組數組構造一個密鑰,第二參數指定一個密鑰演算法的名稱 // 產生HmacSHA1專屬密鑰 SecretKey secretKey = new SecretKeySpec(data, MAC_NAME); // 產生一個指定 Mac 演算法 的 Mac 對象 Mac mac = Mac.getInstance(MAC_NAME); // 用給定密鑰初始化 Mac 對象 mac.init(secretKey); byte[] text = paramStr.getBytes(ENCODING); // 完成 Mac 操作 byte[] encryptByte = mac.doFinal(text); // 將byte[]-->hexString cipher = ByteUtils.toHex(encryptByte); } catch (Exception e) { e.printStackTrace(); log.error("HMACSHA1加密失敗:" + e.getMessage()); } log.info("HMACSHA1加密結果:" + cipher); return cipher;}3.校正
/** * 判斷來源資料與加密資料是否一致 * @explain * @param srcStr * 原字串 * @param secretStr * 16進位加密字串 * @param key * 密鑰 * @return 校正結果 */public static boolean verify(String srcStr, String secretStr, String key) { boolean flag = false; String cipherText = encrypt(srcStr, key); if (cipherText.equals(secretStr)) flag = true; return flag;}4.測試
/** * 測試 * @param args */public static void main(String[] args) { String json = "{\"name\":\"Marydon\",\"website\":\"http://www.cnblogs.com/Marydon20170307\"}"; String key = "測試"; String cipher = HMAC_SHA1Utils.encrypt(json, key); System.out.println(cipher); System.out.println(HMAC_SHA1Utils.verify(json, cipher, key));}
相關推薦:
- java AES加密、解密
- java sm3密碼編譯演算法實現
- java sm4國密演算法加密、解密
java HMAC_SHA1密碼編譯演算法