Python HMAC

Python HMAC
HMAC ist eine beliebte Message -Hashing -Methode. Es führt dies durch die Verwendung eines geheimen kryptografischen Schlüssels und einer kryptografischen Hash -Funktion. Es kann verwendet werden, um die Gültigkeit und Authentizität von Daten zu gewährleisten. Anstatt sich auf eine öffentliche Schlüsselinfrastruktur mit Zertifikaten zu verlassen.

Das HMAC -Modul in Python bietet uns eine Implementierung für diese Methode. Es verwendet die Form eines Hashing -Algorithmus als Eingabe, der eines der im Python -Hashlib -Modul erwähnten Algorithmen ist. In diesem Artikel werden Sie angezeigt.

Beispiel 1:

Dies ist das erste Beispiel des Artikels. Die Nachricht und der Schlüssel (mit „msgg“ und key_val in unserem Code gekennzeichnet) werden zuerst in diesem Code dieses Beispiels initialisiert. Anschließend wird der Schlüssel und den SHA1 -Algorithmus verwendet, um einen Nachrichtenauthentifizierungscode für die angegebene Nachricht auf drei verschiedene Arten zu erstellen.

Wir konstruieren zunächst eine Instanz von HMAC mit der neuen () -Methode und übergeben sie Bytes für den Schlüssel und die Nachricht und „SHA1“ für den Hashing -Algorithmus.

Die neue () -Methode generiert eine Instanz von HMAC mit einer Bytes-basierten Anfangsnachricht. Es kann dann verwendet werden, um Code für die Nachrichtenauthentifizierung zu erstellen. Ohne die Startnachricht können wir nur eine Instanz von HMAC erstellen. Aber wir benötigen einen Schlüssel und einen „DigestMod“ für diesen Zweck.

Ein Aufruf der Methode update () kann zum Hinzufügen von Nachrichten verwendet werden. Der Schlüssel muss einem Byte -Format folgen. Der DigestMod -Parameter akzeptiert Namen von sicheren Hashing -Algorithmen aus dem Hashlib -Modul.

Der Meldungsauthentifizierungscode wird dann gedruckt. Die HMAC -Instanz wird in der zweiten Hälfte des Codes ohne Startnachricht erstellt. Danach wird die Nachricht mit der update () -Methode hinzugefügt. Die Methode update () fügt Nachrichten hinzu, die als Eingabe zu einer bereits vorhandenen Nachricht übergeben wurden. Wir können diese Methode mehrmals aufrufen und sie sammeln weiterhin Nachrichten an.

Schließlich berechnet und druckt es die Verdauung. Der Code im dritten Abschnitt generiert eine Instanz von HMAC ohne erste Nachricht. Die Methode update () wird dann verwendet, um Nachrichten in zwei Abschnitten hinzuzufügen. Schließlich berechnet und druckt es die Verdauung. Schließlich veröffentlicht der Code die Digest- und Blockgrößen für jede HMAC -Instanz.

Die Methode digest () gibt den Nachrichtenauthentifizierungscode der Daten zurück. Der Code ist im Bytesformat. Die Ausgangsgröße wird durch den Eingangssicherungsalgorithmus bestimmt. Wenn der im Eingang verwendete Hashing -Algorithmus SHA1 ist, beträgt der Ausgang 20 Bytes. Für Ihr Verständnis des Konzepts haben wir ein Bild des gesamten Code unten beigefügt.

HMAC importieren
msgg = "Python ist einfach."
key_val = "abcxyz"
hmac_one = hmac.neu (KEY = KEY_VAL.encode (), msg = msgg.codode (), digestmod = "sha1")
Message_Digest_one = hmac_one.verdauen()
print (" - message digest One: ".Format (hmac_one.Name, Message_Digest_one)))
HMAC_TWO = HMAC.neu (KEY = KEY_VAL.codode (), digestmod = "sha1")
HMAC_TWO.update (bytes (msgg, coding = "utf-8"))
Message_Digest_two = hmac_two.verdauen()
print (" - message digest zwei: ".Format (HMAC_TWO.Name, Message_Digest_two)))
HMAC_WREE = HMAC.neu (KEY = KEY_VAL.codode (), digestmod = "sha1")
HMAC_THREE.Update (Bytes ("Programmierung ist", coding = "utf-8"))
HMAC_THREE.Update (Bytes ("Easy and Fun", Coding = "UTF-8"))
Message_Digest_THee = HMAC_THREE.verdauen()
print (" - message digest drei: ".Format (HMAC_THREE.Name, Message_Digest_Three)))
print ("\ nMessage Digest Größe für 1: , 2: und 3: ".Format (hmac_one.digest_size, hmac_two.digest_size, hmac_three.digest_size,)))
print ("Nachrichtenblockgröße für 1: , 2: und 3: ".Format (hmac_one.Block_size, HMAC_TWO.Block_size, HMAC_THREE.Block Größe,))

Hier werden die Authentifizierungsnachricht und die Bytegröße bei der Ausführung des beigefügten Code angezeigt.

Beispiel 2:

In unserem zweiten Beispiel zeigen wir Ihnen, wie Sie Nachrichtenauthentifizierungscodes mithilfe der HMAC -Technik noch einmal konstruieren, diesmal jedoch mit dem SHA256 Secure Hashing -Algorithmus. Unser Code für diesen Abschnitt ist nahezu identisch mit dem unseres vorherigen Beispiels, mit einigen kleinen Unterschieden. Es verwendet den Verweis der Hashlib -Bibliothek auf den SHA256 -Algorithmus.

HMAC importieren
Hashlib importieren
msg_one = "Python ist leicht zu lernen."
key_one = "aabbccxxyyzz"
hmac_one = hmac.new (key = key_one.codode (), msg = msg_one.codode (), digestmod = hashlib.SHA256)
Message_Digest_one = hmac_one.verdauen()
print (" - message digest One: ".Format (hmac_one.Name, Message_Digest_one)))
HMAC_TWO = HMAC.new (key = key_one.codode (), digestmod = hashlib.SHA256)
HMAC_TWO.update (bytes (msg_one, coding = "utf-8"))
Message_Digest_two = hmac_two.verdauen()
print (" - message digest zwei: ".Format (HMAC_TWO.Name, Message_Digest_two)))
HMAC_WREE = HMAC.new (key = key_one.codode (), digestmod = hashlib.SHA256)
HMAC_THREE.Update (Bytes ("Learn", Coding = "UTF-8"))
HMAC_THREE.update (bytes ("python", coding = "utf-8"))
Message_Digest_THee = HMAC_THREE.verdauen()
print (" - message digest drei: ".Format (HMAC_THREE.Name, Message_Digest_Three)))
print ("\ nMessage Digest Größe für 1: , 2: und 3: ".Format (hmac_one.digest_size, hmac_two.digest_size, hmac_three.digest_size,)))
print ("Nachrichtenblockgröße für 1: , 2: und 3: ".Format (hmac_one.Block_size, HMAC_TWO.Block_size, HMAC_THREE.Block Größe,))

Hier ist das Ergebnis, in dem Sie sehen können, dass wir den Meldungsauthentifizierungscode mit dem HMAC -Algorithmus und SHA256 berechnet haben.

Beispiel 3:

In unserem dritten Beispiel zeigen wir, wie Sie einen HEX -Nachrichtenauthentifizierungscode mit der HMAC -Technik und SHA256 als Backend erstellen können. Der Code dieses Beispiels ist identisch mit der vorherigen, mit der Ausnahme, dass wir die HexDigest () -Technik verwenden, um den hexadezimalen Authentifizierungscode zu berechnen.

Die HexDigest -Methode gibt Daten als hexadezimale Ziffern als Nachrichtenauthentifizierungscode zurück. Da ein Byte zwei hexadezimale Ziffern machen kann, ist dies der Fall.

Die Ausgangsgröße wird durch den Eingangssicherungsalgorithmus bestimmt. Wenn der Sha1 -Eingangshashing -Algorithmus beispielsweise verwendet wird, beträgt der resultierende Wert 40 Hexadezimalstellen.

HMAC importieren
Hashlib importieren
msg_one = "Alles über Python."
key_one = "aabbccxyz"
hmac_one = hmac.new (key = key_one.codode (), msg = msg_one.codode (), digestmod = hashlib.SHA512)
Message_Digest_one = hmac_one.hexDigest ()
print (" - hex message digest eins: ".Format (hmac_one.Name, Message_Digest_one)))
HMAC_TWO = HMAC.new (key = key_one.codode (), digestmod = hashlib.SHA512)
HMAC_TWO.update (bytes (msg_one, coding = "utf-8"))
Message_Digest_two = hmac_two.hexDigest ()
print (" - hex message digest zwei: ".Format (HMAC_TWO.Name, Message_Digest_two)))
HMAC_WREE = HMAC.new (key = key_one.codode (), digestmod = hashlib.SHA512)
HMAC_THREE.Update (Bytes ("All About", Coding = "UTF-8"))
HMAC_THREE.Update (Bytes ("Python -Sprache.", coding =" utf-8 "))
Message_Digest_THee = HMAC_THREE.hexDigest ()
print (" - hex message digest drei: ".Format (HMAC_THREE.Name, Message_Digest_Three)))
print ("\ nMessage Digest Größe für 1: , 2: und 3: ".Format (hmac_one.digest_size, hmac_two.digest_size, hmac_three.digest_size,)))
print ("Nachrichtenblockgröße für 1: , 2: und 3: ".Format (hmac_one.Block_size, HMAC_TWO.Block_size, HMAC_THREE.Block Größe,))

Im Folgenden finden Sie den Ausgangs -Screenshot, bei dem Sie sehen können, dass die Authentifizierungsmeldungen und die Größe und die Blockgröße angezeigt werden.

Beispiel 4:

Wir zeigen, wie Sie Nachrichtenauthentifizierungscode erstellen, ohne eine Instanz des HMAC zu erstellen. Digest (Schlüssel, MSG, Digest) - Es dauert als Eingabe einer Taste, eine zum Codieren.

Dieser Code zeigt, wie die Methode digest () verwendet wird, um einen Nachrichtenauthentifizierungscode für eine bestimmte Nachricht direkt aus der Eingabetaste zu erstellen, anstatt eine Instanz von HMAC wie im vorherigen Beispiel zu erstellen. Da es eine optimierte C -Implementierung zum Bau des Digest verwendet, ist diese Methode schneller als die Verwendung von HMAC, um Authentifizierungscodes für winzige Kommunikation zu erstellen.

HMAC importieren
Hashlib importieren
msgg = "Python -Programmierung"
KEY_ONE = "ABCABCABC"
Message_Digest_one = HMAC.Digest (KEY = KEY_ONE.encode (), msg = msgg.codode (), digest = "sha3_256")
print ("message digest One: ".Format (Message_Digest_one))
Message_Digest_two = hmac.Digest (KEY = KEY_ONE.codode (), msg = bytes (msgg, coding = "utf-8"), digest = hashlib.SHA3_256)
print ("Message Digest Two: ".Format (Message_Digest_two))

Hier ist das Ergebnis, in dem Sie sehen können, dass der Meldungsauthentifizierungscode mit der Verwendung des verdauen() Methode.

Abschluss:

HMAC ist eine kryptografische funktionsbasierte Nachrichtenauthentifizierungstechnik. Die weit verbreitete HMAC -Technik wird in diesem Beitrag ausführlich erörtert. Die Hauptidee dieses Ansatzes besteht darin, einen gemeinsamen geheimen Schlüssel zu verwenden, um einen kryptografischen Hash der tatsächlichen Daten zu kombinieren. Dies ist für den einzigen Zweck, einen gemeinsamen geheimen Schlüssel zu erstellen. Wir haben diese Idee ausführlich durchgemacht und Beispiele geliefert, die Ihnen helfen, sie zu verstehen.