欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現的HMacMD5加密算法示例

 更新時間:2018年04月03日 11:48:20   作者:開心果汁  
這篇文章主要介紹了Python實現的HMacMD5加密算法,簡單說明了HMAC-MD5加密算法的概念、原理并結合實例形式分析了Python實現HMAC-MD5加密算法的相關操作技巧,,末尾還附帶了Java實現HMAC-MD5加密算法的示例,需要的朋友可以參考下

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

什么是 HMAC-MD5?

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

2、MD5就是通過散列對要輸出的數據進行摘要,接收到數據時,再同樣進行MD5散列,與給定的MD5散列值比較,一致不一致就很清楚了。通常來說,傳輸的數據和MD5是不同的渠道給出的,比如網頁上顯示MD5,下載鏈接是某個鏡像網站的。如果要通過同一個渠道發(fā)送數據和散列值的話(比如消息認證碼),就要考慮數據和MD5同時被篡改的問題,如果第三方修改了數據,然后進行MD5散列,并一塊發(fā)給接收方,接收方并不能察覺到數據被篡改。HMAC-MD5就可以用一把發(fā)送方和接收方都有的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.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)));
  }
}

輸出結果:

2cbb94ce78b35e4030851c4d40dacf12

PS:關于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python文件與目錄操作技巧匯總》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python實現的計數排序算法示例

    Python實現的計數排序算法示例

    這篇文章主要介紹了Python實現的計數排序算法,簡單描述了計數排序的算法原理并結合具體實例形式分析了Python計數排序的相關實現與使用技巧,需要的朋友可以參考下
    2017-11-11
  • python人工智能tensorflow函數tf.get_variable使用方法

    python人工智能tensorflow函數tf.get_variable使用方法

    這篇文章主要為大家介紹了python人工智能tensorflow函數tf.get_variable使用方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • python中退出多層循環(huán)的方法

    python中退出多層循環(huán)的方法

    這篇文章主要介紹了python中退出多層循環(huán)的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • python Web開發(fā)你要理解的WSGI & uwsgi詳解

    python Web開發(fā)你要理解的WSGI & uwsgi詳解

    這篇文章主要給大家介紹了關于python Web開發(fā)你一定要理解的WSGI & uwsgi的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-08-08
  • Python實現轉換圖片背景顏色代碼

    Python實現轉換圖片背景顏色代碼

    這篇文章主要介紹了Python實現轉換圖片背景顏色代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • python自動更新pom文件的方法

    python自動更新pom文件的方法

    這篇文章主要介紹了python自動更新pom文件的方法,本文通過圖文實例代碼相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 在主機商的共享服務器上部署Django站點的方法

    在主機商的共享服務器上部署Django站點的方法

    這篇文章主要介紹了在主機商的共享服務器上部署Django站點的方法,Django是最具人氣的Python框架,需要的朋友可以參考下
    2015-07-07
  • Python環(huán)境配置實現pip加速過程解析

    Python環(huán)境配置實現pip加速過程解析

    這篇文章主要介紹了Python環(huán)境配置實現pip加速過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • python3 scrapy框架的執(zhí)行流程

    python3 scrapy框架的執(zhí)行流程

    Scrapy的安裝有多種方式,它支持Python2.7版本及以上或Python3.3版本及以上。下面說明python3 scrapy框架的常用命令及框架執(zhí)行流程,感興趣的朋友一起看看吧
    2021-07-07
  • Pytorch多GPU訓練過程

    Pytorch多GPU訓練過程

    這篇文章主要介紹了Pytorch多GPU訓練過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論