Symmetrische und asymmetrische Kryptographie

Lassen Sie uns in diesem Kapitel die symmetrische und asymmetrische Kryptographie im Detail diskutieren.

Symmetrische Kryptographie

Bei diesem Typ verwendet der Ver- und Entschlüsselungsprozess denselben Schlüssel. Es wird auch als bezeichnetsecret key cryptography. Die Hauptmerkmale der symmetrischen Kryptographie sind folgende:

  • Es ist einfacher und schneller.
  • Die beiden Parteien tauschen den Schlüssel auf sichere Weise aus.

Nachteil

Der Hauptnachteil der symmetrischen Kryptographie besteht darin, dass die Nachricht leicht geändert werden kann, wenn der Schlüssel an den Eindringling weitergegeben wird, und dies wird als Risikofaktor angesehen.

Datenverschlüsselungsstandard (DES)

Der beliebteste Algorithmus für symmetrische Schlüssel ist der Data Encryption Standard (DES). Python enthält ein Paket, das die Logik des DES-Algorithmus enthält.

Installation

Der Befehl zur Installation des DES-Pakets pyDES in Python ist -

pip install pyDES

Die einfache Programmimplementierung des DES-Algorithmus ist wie folgt:

import pyDes

data = "DES Algorithm Implementation"
k = pyDes.des("DESCRYPT", pyDes.CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=pyDes.PAD_PKCS5)
d = k.encrypt(data)

print "Encrypted: %r" % d
print "Decrypted: %r" % k.decrypt(d)
assert k.decrypt(d) == data

Es ruft die Variable auf padmode Hiermit werden alle Pakete gemäß der DES-Algorithmus-Implementierung abgerufen und die Ver- und Entschlüsselung auf eine bestimmte Weise verfolgt.

Ausgabe

Sie können die folgende Ausgabe als Ergebnis des oben angegebenen Codes sehen -

Asymmetrische Kryptographie

Es wird auch als bezeichnet public key cryptography.Es funktioniert umgekehrt wie die symmetrische Kryptographie. Dies bedeutet, dass zwei Schlüssel erforderlich sind: einer für die Verschlüsselung und einer für die Entschlüsselung. Der öffentliche Schlüssel wird zum Verschlüsseln und der private Schlüssel zum Entschlüsseln verwendet.

Nachteil

  • Aufgrund seiner Schlüssellänge trägt es zu einer geringeren Verschlüsselungsgeschwindigkeit bei.
  • Schlüsselverwaltung ist entscheidend.

Der folgende Programmcode in Python veranschaulicht die Funktionsweise der asymmetrischen Kryptographie unter Verwendung des RSA-Algorithmus und deren Implementierung:

from Crypto import Random
from Crypto.PublicKey import RSA
import base64

def generate_keys():
   # key length must be a multiple of 256 and >= 1024
   modulus_length = 256*4
   privatekey = RSA.generate(modulus_length, Random.new().read)
   publickey = privatekey.publickey()
   return privatekey, publickey

def encrypt_message(a_message , publickey):
   encrypted_msg = publickey.encrypt(a_message, 32)[0]
   encoded_encrypted_msg = base64.b64encode(encrypted_msg)
   return encoded_encrypted_msg

def decrypt_message(encoded_encrypted_msg, privatekey):
   decoded_encrypted_msg = base64.b64decode(encoded_encrypted_msg)
   decoded_decrypted_msg = privatekey.decrypt(decoded_encrypted_msg)
   return decoded_decrypted_msg

a_message = "This is the illustration of RSA algorithm of asymmetric cryptography"
privatekey , publickey = generate_keys()
encrypted_msg = encrypt_message(a_message , publickey)
decrypted_msg = decrypt_message(encrypted_msg, privatekey)

print "%s - (%d)" % (privatekey.exportKey() , len(privatekey.exportKey()))
print "%s - (%d)" % (publickey.exportKey() , len(publickey.exportKey()))
print " Original content: %s - (%d)" % (a_message, len(a_message))
print "Encrypted message: %s - (%d)" % (encrypted_msg, len(encrypted_msg))
print "Decrypted message: %s - (%d)" % (decrypted_msg, len(decrypted_msg))

Ausgabe

Sie können die folgende Ausgabe finden, wenn Sie den oben angegebenen Code ausführen -