首頁  >  文章  >  後端開發  >  Python怎麼實作HMacMD5加密演算法

Python怎麼實作HMacMD5加密演算法

php中世界最好的语言
php中世界最好的语言原創
2018-04-09 09:57:252059瀏覽

這次帶給大家Python怎麼實作HMacMD5加密演算法,Python實作HMacMD5加密演算法的注意事項有哪些,以下就是實戰案例,一起來看一下。

本文實例講述了Python實現的HMacMD5加密演算法。分享給大家參考,如下:

什麼是 HMAC-MD5?

1、例如你和對方共享了一個密鑰K,現在你要發訊息給對方,既要保證訊息沒有被篡改,又要能證明訊息確實是你本人發的,那麼就把原資訊和使用K計算的HMAC的值一起寄過去。對方接到之後,使用自己手中的K把訊息計算一下HMAC,如果跟你發送的HMAC一致,那麼可以認為這個訊息既沒有被竄改也沒有冒充。

2、MD5就是透過雜湊對要輸出的資料進行摘要,接收到資料時,再同樣進行MD5散列,與給定的MD5雜湊值比較,一致不一致就很清楚了。通常來說,傳輸的資料和MD5是不同的管道給出的,例如網頁上顯示MD5,下載連結是某個鏡像網站的。如果要透過同一個管道傳送資料和雜湊值的話(例如訊息認證碼),就要考慮資料和MD5同時被竄改的問題,如果第三方修改了數據,然後進行MD5散列,並一塊發給接收方,接收方並不能察覺到資料被竄改。 HMAC-MD5就可以用一把發送方和接收方都有的key來計算,而沒有這把key的第三方是無法計算出正確的雜湊值的,這樣就可以防止資料被竄改。

python 版:

#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import hmac
import hashlib
####################设置Key值##############
ekey = 'laidefa'
###############输入数据############
to_enc = '{"name":"zhangsan"}'
enc_res = hmac.new(ekey, to_enc, hashlib.md5).hexdigest()
print enc_res

#輸出結果:

"D:\Program Files\Python27\python 。

package tom;
import java.security.MessageDigest;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/**
* 基础加密组件
* @version 1.0
*/
public class Hmacmd5 {
  /**
   * MAC算法可选以下多种算法
   *
   * <pre class="brush:php;toolbar:false">
   * HmacMD5
   * HmacSHA1
   * HmacSHA256
   * HmacSHA384
   * HmacSHA512
   * 
   */   public static final String KEY_MAC = "HmacMD5";   /**    * HMAC加密    *    * @param data    * @param key    * @return    * @throws Exception    */   public static byte[] encryptHMAC(byte[] data, String key) throws Exception {     SecretKey secretKey = new SecretKeySpec(key.getBytes(), KEY_MAC);     Mac mac = Mac.getInstance(secretKey.getAlgorithm());     mac.init(secretKey);     return mac.doFinal(data);   }   /*byte数组转换为HexString*/   public static String byteArrayToHexString(byte[] b) {     StringBuffer sb = new StringBuffer(b.length * 2);     for (int i = 0; i < b.length; i++) {      int v = b[i] & 0xff;      if (v < 16) {       sb.append('0');      }      sb.append(Integer.toHexString(v));     }     return sb.toString();    }   public static void main(String[] args)throws Exception{     String inputStr = "{\"name\":\"zhangsan\"}";     byte[] inputData = inputStr.getBytes();     String key = "laidefa";     System.out.println(Hmacmd5.byteArrayToHexString(Hmacmd5.encryptHMAC(inputData, key)));   } }
輸出結果:

2cbb94ce78b35e4030851c4d40dacf12

#相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

python字串如何轉換為二維陣列

Event emitter的監聽事件

以上是Python怎麼實作HMacMD5加密演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn