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 -