HMAC 演算法的使用__演算法

來源:互聯網
上載者:User
HMAC 的用途
HMAC 演算法主要應用於身分識別驗證,用法如下:    1.用戶端發出登入請求    2.伺服器返回一個隨機值,在會話記錄中儲存這個隨機值    3.用戶端將該隨機值作為密鑰,使用者密碼進行 hmac 運算,遞交給伺服器    4.伺服器讀取資料庫中的使用者密碼,利用密鑰做和用戶端一樣的 hmac運算,然後與使用者發送的結果比較,如果一致,則使用者身份合法。

這麼做有什麼好處呢。 如果我們在登入的過程中,駭客截獲了我們發送的資料,他也只能得到 hmac 加密過後的結果,由於不知道密鑰,根本不可能擷取到使用者密碼,從而保證了安全性。 HMAC 的種類

演算法種類                摘要長度HmacMD5                 128HmacSHA1                160HmacSHA256              256HmacSHA384              384HmacSHA512              512
HMAC 的使用

1 . 剛才也看到了,想要使用 HMAC 演算法,那麼我們需要產生一個密鑰,這個密鑰怎麼產生呢。自己隨便瞎填嗎。 JDK 中內建了一個金鑰產生器 KeyGenerator 用於協助我們產生密鑰,樣本如下

public static byte[] getSecretKey() throws Exception {    KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5"); // 可填入 HmacSHA1,HmacSHA256 等    SecretKey key = keyGenerator.generateKey();    byte[] keyBytes = key.getEncoded();    return keyBytes;}

2 . 既然已經得到了密鑰,那麼下面就開始執行訊息摘要演算法,在這之前,由於我們產生的密鑰是以 byte 數組返回的,所以我們需要將其還原成 SecretKey,具體過程如下

public static String encryptHmac(byte[] key, byte[] data) throws Exception {    SecretKey secretKey = new SecretKeySpec(key, "HmacMD5");    Mac mac = Mac.getInstance("HmacMD5");    mac.init(secretKey);    byte[] resultBytes = mac.doFinal(data);    String resultString = byteToHexString(resultBytes);    return resultString;}

如果想使用其他的演算法,可以將填入 HmacMD5 的所有欄位改為你想使用的演算法即可,比如 HmacSHA1, HmacSHA256 等。

下面對 helloworld 執行演算法查看結果

1efd5e8d4d0c20f68bdc732fd7a79677

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.