国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現的HMacMD5加密算法示例

2020-02-22 23:34:52
字體:
來源:轉載
供稿:網友

本文實例講述了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-8import sysreload(sys)sys.setdefaultencoding('utf-8')import hmacimport 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.exe" D:/PycharmProjects/learn2017/hmacmd5.py
2cbb94ce78b35e4030851c4d40dacf12
Process finished with exit code 0

java版:

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>   * HmacMD5   * HmacSHA1   * HmacSHA256   * HmacSHA384   * HmacSHA512   * </pre>   */  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)));  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安图县| 治县。| 宝清县| 临西县| 辛集市| 六枝特区| 义乌市| 双牌县| 青龙| 贵港市| 六盘水市| 黎城县| 泊头市| 和龙市| 炎陵县| 南漳县| 潞城市| 承德市| 澄城县| 万宁市| 长治市| 开阳县| 南丰县| 泽库县| 木兰县| 资源县| 哈密市| 五原县| 平邑县| 阳新县| 东兴市| 肃宁县| 南投县| 天津市| 富民县| 巴林右旗| 安丘市| 肥西县| 临桂县| 临桂县| 广宁县|