java HMAC_SHA1密碼編譯演算法

來源:互聯網
上載者:User

標籤: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密碼編譯演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.