Python Hmac

Python Hmac
HMAC jest popularną metodą mieszania wiadomości. Osiąga to za pomocą tajnego klucza kryptograficznego i funkcji skrótu kryptograficznego. Można go użyć do zapewnienia ważności i autentyczności danych. Zamiast polegać na infrastrukturze klucza publicznego z certyfikatami, pozwala nam obliczyć autentyczność wiadomości i integralność, wykorzystując współdzielony klucz między dwiema stronami.

Moduł HMAC w Python oferuje nam implementację tej metody. Wykorzystuje formę algorytmu mieszania jako wejścia, który jest jednym z algorytmów wymienionych w module hashlib Pythona. W tym artykule pokaże, jak zbudować kod uwierzytelniania wiadomości z modułem HMAC Pythona za pomocą prostych przykładów.

Przykład 1:

To jest pierwszy przykład artykułu. Wiadomość i klucz (oznaczone jako „MSGG” i Key_val w naszym kodzie) są po raz pierwszy zainicjowane w kodzie tego przykładu. Następnie używa klucza i algorytmu SHA1 do utworzenia kodu uwierzytelniania wiadomości dla danej wiadomości na trzy odrębne sposoby.

Najpierw konstruujemy instancję HMAC przy użyciu metody nowej (), przekazując ją bajty dla klucza i wiadomości oraz „SHA1” dla algorytmu mieszania.

Metoda nowa () generuje instancję HMAC z początkowym komunikatem opartym na bajtach. Można go następnie użyć do tworzenia kodu do uwierzytelniania wiadomości. Bez wiadomości początkowej możemy zbudować tylko instancję HMAC. Ale będziemy potrzebować klucza i „trawienia” w tym celu.

Do dodawania wiadomości można użyć wywołania do metody aktualizacji (). Klucz musi być zgodny z formatem bajtów. Parametr DigestMod przyjmuje nazwy bezpiecznego algorytmów mieszania z modułu hashlib.

Kod uwierzytelniania wiadomości jest następnie drukowany. Instancja HMAC jest tworzona bez żadnej wiadomości początkowej w drugiej połowie kodu. Następnie komunikat zostanie dodany za pomocą metody aktualizacji (). Metoda aktualizacji () dodaje wiadomości przekazane jako dane wejściowe do wiadomości, która już istnieje. Możemy nazwać tę metodę wiele razy i będzie ona nadal gromadzić wiadomości.

Wreszcie oblicza i drukuje trawienie. Kod w trzeciej sekcji generuje instancję HMAC bez wstępnej wiadomości. Metoda aktualizacji () jest następnie używana do dodawania wiadomości w dwóch sekcjach. Wreszcie oblicza i drukuje trawienie. Wreszcie kod publikuje rozmiary trawienia i bloków dla każdej instancji HMAC.

Metoda digest () zwraca kod uwierzytelniania wiadomości danych. Kod jest w formacie bajtów. Rozmiar wyjścia jest określany przez algorytm bezpiecznego haszu wejściowego. Jeśli algorytm mieszania zastosowanym na wejściu jest SHA1, wyjście wyniesie 20 bajtów. Aby zrozumieć koncepcję, dołączyliśmy obraz całego kodu poniżej.

Importuj HMAC
msgg = "Python jest łatwy."
key_val = "abcxyz"
hmac_one = hmac.nowy (key = key_val.encode (), msg = msgg.encode (), digestMod = "sha1")
message_digest_one = hmac_one.strawić()
print (" - komunikat Digest One: ".Format (hmac_one.Nazwa, komunikat_digest_one))
hmac_two = hmac.nowy (key = key_val.encode (), digestMod = "sha1")
HMAC_TWO.aktualizacja (bajty (MSGG, Encoding = "utf-8"))
message_digest_two = HMAC_TWO.strawić()
print (" - komunikat Trawaj dwa: ".Format (HMAC_TWO.Nazwa, message_digest_two))
hmac_three = HMAC.nowy (key = key_val.encode (), digestMod = "sha1")
HMAC_TERE.aktualizacja (bajty („Programowanie to”, Encoding = „UTF-8”))
HMAC_TERE.aktualizacja (bajty („łatwy i zabawny”, kodowanie = „utf-8”))
message_digest_three = hmac_three.strawić()
print (" - przekazanie wiadomości trzy: ".format (hmac_three.Nazwa, message_digest_three))
print („\ nmessage rozmiar trawienia dla 1: , 2: i 3: ”.Format (hmac_one.Digest_Size, HMAC_TWO.Digest_Size, hmac_three.digest_size,))
print („Rozmiar bloku wiadomości dla 1: , 2: i 3: ”.Format (hmac_one.Block_Size, Hmac_Two.Block_Size, HMAC_THERE.rozmiar bloku,))

Tutaj komunikat uwierzytelnienia i rozmiar bajtu są wyświetlane po wykonaniu załączonego kodu.

Przykład 2:

W naszym drugim przykładzie jeszcze raz pokażemy, jak skonstruować kody uwierzytelniania wiadomości za pomocą techniki HMAC, ale tym razem z algorytmem bezpiecznego mieszania SHA256. Nasz kod tej sekcji jest prawie identyczny z kodem naszego poprzedniego przykładu, z kilkoma małymi różnicami. Wykorzystuje odniesienie biblioteki hashlib do algorytmu SHA256.

Importuj HMAC
Importuj hashlib
msg_one = "Python jest łatwy do nauczenia."
key_one = "aabbccxxyyzz"
hmac_one = hmac.nowy (key = key_one.encode (), msg = msg_one.encode (), tigestMod = hashlib.SHA256)
message_digest_one = hmac_one.strawić()
print (" - komunikat Digest One: ".Format (hmac_one.Nazwa, komunikat_digest_one))
hmac_two = hmac.nowy (key = key_one.encode (), tigestMod = hashlib.SHA256)
HMAC_TWO.aktualizacja (bajty (msg_one, kodowanie = "utf-8"))
message_digest_two = HMAC_TWO.strawić()
print (" - komunikat Trawaj dwa: ".Format (HMAC_TWO.Nazwa, message_digest_two))
hmac_three = HMAC.nowy (key = key_one.encode (), tigestMod = hashlib.SHA256)
HMAC_TERE.aktualizacja (bajty („uczenia”, kodowanie = „UTF-8”))
HMAC_TERE.Aktualizacja (bajty („Python”, Encoding = „UTF-8”))
message_digest_three = hmac_three.strawić()
print (" - przekazanie wiadomości trzy: ".format (hmac_three.Nazwa, message_digest_three))
print („\ nmessage rozmiar trawienia dla 1: , 2: i 3: ”.Format (hmac_one.Digest_Size, HMAC_TWO.Digest_Size, hmac_three.digest_size,))
print („Rozmiar bloku wiadomości dla 1: , 2: i 3: ”.Format (hmac_one.Block_Size, Hmac_Two.Block_Size, HMAC_THERE.rozmiar bloku,))

Oto wynik, w którym widać, że obliczyliśmy kod uwierzytelniania wiadomości za pomocą algorytmu HMAC i SHA256.

Przykład 3:

W naszym trzecim przykładzie pokażemy, jak skonstruować kod uwierzytelniania wiadomości sześciokątnej za pomocą techniki HMAC i SHA256 jako zaplecza. Kod tego przykładu jest identyczny z poprzednim, z tym wyjątkiem, że używamy techniki hexdigest () do obliczenia kodu uwierzytelniania heksadecimalnego.

Metoda HexDigest zwraca dane jako cyfry szesnastkowe jako kod uwierzytelniania wiadomości. Ponieważ jeden bajt może wykonać dwie cyfry szesnastkowe, tak jest.

Rozmiar wyjścia jest określany przez algorytm bezpiecznego haszu wejściowego. Jeśli na przykład zastosowano algorytm haszu wejściowego SHA1, wynikową wartość wynosi 40 cyfr szesnastkowych.

Importuj HMAC
Importuj hashlib
msg_one = "Wszystko o Pythonie."
key_one = "aabbccxyz"
hmac_one = hmac.nowy (key = key_one.encode (), msg = msg_one.encode (), tigestMod = hashlib.SHA512)
message_digest_one = hmac_one.Hexdigest ()
print (" - hex komunikat Digest One: ".Format (hmac_one.Nazwa, komunikat_digest_one))
hmac_two = hmac.nowy (key = key_one.encode (), tigestMod = hashlib.SHA512)
HMAC_TWO.aktualizacja (bajty (msg_one, kodowanie = "utf-8"))
message_digest_two = HMAC_TWO.Hexdigest ()
print („ - hex komunikat Trawdź dwa: ”.Format (HMAC_TWO.Nazwa, message_digest_two))
hmac_three = HMAC.nowy (key = key_one.encode (), tigestMod = hashlib.SHA512)
HMAC_TERE.aktualizacja (bajty („wszystko o”, kodowanie = „utf-8”))
HMAC_TERE.Aktualizacja (bajty („język Python.", kodowanie =" utf-8 "))
message_digest_three = hmac_three.Hexdigest ()
print (" - hex komunikat trawisz trzy: ".format (hmac_three.Nazwa, message_digest_three))
print („\ nmessage rozmiar trawienia dla 1: , 2: i 3: ”.Format (hmac_one.Digest_Size, HMAC_TWO.Digest_Size, hmac_three.digest_size,))
print („Rozmiar bloku wiadomości dla 1: , 2: i 3: ”.Format (hmac_one.Block_Size, Hmac_Two.Block_Size, HMAC_THERE.rozmiar bloku,))

Poniżej znajduje się wyjściowy zrzut ekranu, w którym widać, że wyświetlane są komunikaty uwierzytelniania oraz rozmiar trawienia i rozmiar bloku.

Przykład 4:

Pokazujemy, jak tworzyć kod uwierzytelniania wiadomości bez ustanowienia wystąpienia HMAC, wykorzystując metodę modułu HMAC Digest (). Digest (klawisz, msg, tigest) - potrzeba jako wprowadzanie klucza, komunikat do kodowania i algorytm trawienia generują kod uwierzytelniający dla dostarczonej wiadomości.

Ten kod pokazuje, jak użyć metody digest () do konstruowania kodu uwierzytelniania wiadomości dla określonego komunikatu bezpośrednio z klucza wejściowego, zamiast tworzenia instancji HMAC jak w poprzednim przykładzie. Ponieważ wykorzystuje zoptymalizowaną implementację C do konstruowania trawienia, ta metoda jest szybsza niż używanie HMAC do tworzenia kodów uwierzytelniania dla niewielkich komunikacji.

Importuj HMAC
Importuj hashlib
msgg = "Programowanie Pythona"
key_one = "abcabcabc"
message_digest_one = hmac.Digest (key = key_one.encode (), msg = msgg.encode (), digest = "sha3_256")
print („komunikat trawisz jeden: ”.format (komunikat_digest_one))
message_digest_two = hmac.Digest (key = key_one.encode (), msg = bajty (msgg, encoding = "utf-8"), tigest = hashlib.SHA3_256)
print („komunikat Digest dwa: ”.format (komunikat_digest_two))

Oto wynik, w którym widać, że kod uwierzytelniania wiadomości jest tworzony przy użyciu strawić() metoda.

Wniosek:

HMAC to kryptograficzna technika uwierzytelniania wiadomości opartej na funkcji. Powszechnie stosowana technika HMAC jest szczegółowo omówiona w tym poście. Główną ideą tego podejścia jest użycie wspólnego tajnego klucza do połączenia kryptograficznego skrótu rzeczywistych danych. Jest to wyłącznie w celu stworzenia wspólnego tajnego klucza. Przeszliśmy ten pomysł dogłębnie i podaliśmy przykłady, które pomogą ci go zrozumieć.