Kryptografia w Pythonie - proces XOR

W tym rozdziale przyjrzyjmy się procesowi XOR wraz z jego kodowaniem w Pythonie.

Algorytm

Algorytm XOR szyfrowania i deszyfrowania konwertuje zwykły tekst w formacie ASCII bajtów i wykorzystuje procedurę XOR do konwersji go na określony bajt. Oferuje użytkownikom następujące korzyści -

  • Szybkie obliczenia
  • Brak różnicy zaznaczonej po lewej i prawej stronie
  • Łatwe do zrozumienia i analizy

Kod

Możesz użyć następującego fragmentu kodu do wykonania procesu XOR -

def xor_crypt_string(data, key = 'awesomepassword', encode = False, decode = False):
   from itertools import izip, cycle
   import base64
   
   if decode:
      data = base64.decodestring(data)
   xored = ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key)))
   
   if encode:
      return base64.encodestring(xored).strip()
   return xored
secret_data = "XOR procedure"

print("The cipher text is")
print xor_crypt_string(secret_data, encode = True)
print("The plain text fetched")
print xor_crypt_string(xor_crypt_string(secret_data, encode = True), decode = True)

Wynik

Kod procesu XOR daje następujące dane wyjściowe -

Wyjaśnienie

  • Funkcja xor_crypt_string() zawiera parametr określający tryb kodowania i dekodowania, a także wartość ciągu.

  • Podstawowe funkcje są pobierane za pomocą modułów base64, które wykonują procedurę / operację XOR w celu zaszyfrowania lub odszyfrowania zwykłego tekstu / zaszyfrowanego tekstu.

Note - Szyfrowanie XOR służy do szyfrowania danych i jest trudne do złamania metodą brute-force, to znaczy poprzez generowanie losowych kluczy szyfrujących w celu dopasowania do prawidłowego zaszyfrowanego tekstu.