Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel eines in Python_python implementierten HMacMD5-Verschlüsselungsalgorithmus

Beispiel eines in Python_python implementierten HMacMD5-Verschlüsselungsalgorithmus

不言
不言Original
2018-04-08 11:45:232420Durchsuche

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:

http://tools.jb51.net /password/sha_encode

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!

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