Heim > Artikel > Backend-Entwicklung > Beispiel eines in Python_python implementierten HMacMD5-Verschlüsselungsalgorithmus
Dieser Artikel stellt hauptsächlich den in Python implementierten HMacMD5-Verschlüsselungsalgorithmus vor, erläutert kurz das Konzept und Prinzip des HMAC-MD5-Verschlüsselungsalgorithmus und analysiert anhand von Beispielen die relevanten Bedienfähigkeiten der Python-Implementierung des HMAC-MD5-Verschlüsselungsalgorithmus . Es ist auch am Ende angehängt. Hier ist ein Beispiel für die Implementierung des HMAC-MD5-Verschlüsselungsalgorithmus in Java. Freunde, die es benötigen, können sich auf
beziehen. Dieser Artikel beschreibt den in Python implementierten HMacMD5-Verschlüsselungsalgorithmus. Teilen Sie es als Referenz mit allen. Die Details 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 mit Exit-Code 0 beendet
Java-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
PS: Freunde, die sich für Ver- und Entschlüsselung interessieren, können auch auf die Online-Tools dieser Website verweisen:
Text-Online-Verschlüsselung und Entschlüsselungstools (einschließlich AES, DES, RC4 usw.):
http://tools.jb51.net/password/txt_encode
MD5 Online-Verschlüsselungstools:
http://tools.jb51.net/password/CreateMD5Password
Online-Hashing/Hash-Algorithmus-Verschlüsselungstool:
http://tools.jb51.net/password/hash_encrypt
OnlineMD5 /hash/SHA- 1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 Verschlüsselungstools:
http://tools.jb51.net/password/ hash_md5_sha
Online-Sha1/sha224/sha256/sha384/sha512-Verschlüsselungstool:
Verwandte Empfehlungen:
Übertragung: HmacMD5-Algorithmus [PHP-Version]
Das obige ist der detaillierte Inhalt vonBeispiel eines in Python_python implementierten HMacMD5-Verschlüsselungsalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!