Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie den HMacMD5-Verschlüsselungsalgorithmus in Python

So implementieren Sie den HMacMD5-Verschlüsselungsalgorithmus in Python

php中世界最好的语言
php中世界最好的语言Original
2018-04-09 09:57:252061Durchsuche

Dieses Mal werde ich Ihnen Python zeigen, wie Sie den HMacMD5-Verschlüsselungsalgorithmus implementieren und welche Vorsichtsmaßnahmen für die Implementierung des HMacMD5-Verschlüsselungsalgorithmus in Python gelten. Das Folgende ist ein praktischer Fall , lass uns einen Blick darauf werfen.

Das Beispiel in diesem Artikel beschreibt den in Python implementierten HMacMD5-Verschlüsselungsalgorithmus. Teilen Sie es als Referenz mit allen. Die Einzelheiten lauten wie folgt:

Was ist HMAC-MD5?

1. Sie teilen beispielsweise einen Schlüssel K mit der anderen Partei. Jetzt müssen Sie nicht nur sicherstellen, dass die Nachricht nicht gesendet wurde manipuliert, aber auch beweisen, dass die Nachricht tatsächlich von Ihnen stammt. Wenn sie gesendet wird, werden die Originalinformationen und der mit K berechnete HMAC-Wert zusammen gesendet. Nachdem die andere Partei sie erhalten hat, berechnet sie anhand des K in ihrer Hand den HMAC der Nachricht. Wenn dieser mit dem von Ihnen gesendeten HMAC übereinstimmt, kann davon ausgegangen werden, dass die Nachricht nicht manipuliert oder nachgeahmt wurde.

2. MD5 verarbeitet die auszugebenden Daten durch Hashing. Beim Vergleich mit dem angegebenen MD5-Hash-Wert ist klar, dass sie konsistent und inkonsistent sind. Im Allgemeinen werden die übertragenen Daten und MD5 über verschiedene Kanäle bereitgestellt. Beispielsweise wird MD5 auf der Webseite angezeigt und der Download-Link stammt von einer Mirror-Website. Wenn Sie Daten und Hash-Werte über denselben Kanal senden möchten (z. B. Nachrichtenauthentifizierungscode), müssen Sie das Problem berücksichtigen, dass Daten und MD5 gleichzeitig manipuliert werden. Wenn ein Dritter die Daten ändert, führen Sie dies durch MD5-Hashing und gleichzeitiges Senden an den Empfänger. Der Empfänger kann nicht erkennen, dass die Daten manipuliert wurden. HMAC-MD5 kann mithilfe eines Schlüssels berechnet werden, der sowohl vom Sender als auch vom Empfänger gemeinsam genutzt wird. Ein Dritter ohne diesen Schlüssel kann den korrekten Hash-Wert nicht berechnen, wodurch Datenmanipulationen verhindert werden.

Python-Version:

#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

Ausgabeergebnis:

"D:Program FilesPython27python.exe" D: /pyCharmprojects/learn2017/hmacmd5.py
2CBB94CE78B35E4030851C4D40DACF12
PROZESS BEENDET MIT EXIT-CODE 0

Ava-Version:

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)));   } }Ausgabeergebnis:

2cbb94ce78b35e4030851c4d40dacf12

Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall hier gelesen haben Artikel: Für weitere spannende Inhalte achten Sie bitte auf andere verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

So konvertieren Sie einen Python-String in ein zweidimensionales Array

Listening-Ereignis des Ereignisemitters

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den HMacMD5-Verschlüsselungsalgorithmus in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn