RSA-Verschlüsselung in Python

  1. RSA-Verschlüsselung in Python mit einfacher Verschlüsselung
  2. RSA-Verschlüsselung in Python mit kryptografischem Padding
RSA-Verschlüsselung in Python

Dieser Artikel erklärt verschiedene Methoden zum Verschlüsseln und Entschlüsseln von Daten in Python mit dem RSA-Modul.

Das asymmetrische Kryptographieverfahren verwendet ein Schlüsselpaar (öffentlicher und privater Schlüssel) für eine sichere Konversation zwischen zwei Personen. Der Vorteil der asymmetrischen oder Public-Key-Kryptographie besteht darin, dass sie auch eine Methode bietet, um sicherzustellen, dass die Nachricht nicht manipuliert wird und authentisch ist.

Wir können asymmetrische Kryptographie in Python mit dem RSA-Modul auf folgende Weise verwenden.

RSA-Verschlüsselung in Python mit einfacher Verschlüsselung

Es gibt zwei Möglichkeiten, asymmetrische Verschlüsselung mit dem RSA-Modul in Python durchzuführen: einfache RSA-Verschlüsselung und eine korrektere und sicherere Methode durch kryptografisches Padding.

Bei der einfachen RSA-Verschlüsselung können wir ein Schlüsselpaar generieren und die Daten mit dem öffentlichen Schlüssel verschlüsseln. Wir können die Daten mit der Methode _RSAobj.encrypt() verschlüsseln und dann die verschlüsselte Nachricht mit der Methode _RSAobj.decrypt() entschlüsseln.

Beide Methoden _RSAobj.encrypt() und _RSAobj.decrypt() nehmen eine Byte-Zeichenfolge oder eine Länge als Eingabe und führen die einfache RSA-Verschlüsselung bzw. -Entschlüsselung für die Eingabe durch.

Der folgende Beispielcode zeigt, wie die Daten mit der einfachen RSA-Verschlüsselung in Python verschlüsselt und entschlüsselt werden.

import Crypto
from Crypto.PublicKey import RSA
import ast

keyPair = RSA.generate(1024)

pubKey = keyPair.publickey()

encryptedMsg = pubKey.encrypt(b"This is my secret msg", 32)
decryptedMsg = keyPair.decrypt(ast.literal_eval(str(encryptedMsg)))

print("Decrypted message:", decryptedMsg)
Hinweis
Falls beim Importieren des Moduls Crypto ein Fehler auftritt, können Sie es mit dem Befehl pip install pycrypto installieren.

RSA-Verschlüsselung in Python mit kryptografischem Padding

Wir können die PKCS#1 OAEP-Verschlüsselung und -Entschlüsselung mit dem PKCS1_OAEP-Modul von Python durchführen. Das OAEP ist ein Optimal Asymmetric Encryption Padding-Schema, das von RSA veröffentlicht wird und sicherer ist als die einfache und primitive RSA-Verschlüsselung.

Um das OAEP-Schema auszuführen, müssen wir zuerst das Objekt PKCS1OAEP_Cipher generieren und dann die Methoden PKCS1OAEP_Cipher.encrypt() und PKCS1OAEP_Cipher.decrypt() aufrufen, um den Text mit diesem Schema zu verschlüsseln oder zu entschlüsseln. Wenn der Eingabetext ein String-Typ ist, müssen wir ihn zuerst in einen Byte-String konvertieren, da der String-Typ kein gültiger Eingabetyp ist.

Der folgende Code zeigt die OAEP-Verschlüsselung mit dem Modul PKCS1_OAEP in Python.

from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA

key = RSA.generate(2048)
privateKey = key.exportKey("PEM")
publicKey = key.publickey().exportKey("PEM")

message = "this is a top secret message!"
message = str.encode(message)

RSApublicKey = RSA.importKey(publicKey)
OAEP_cipher = PKCS1_OAEP.new(RSApublicKey)
encryptedMsg = OAEP_cipher.encrypt(message)

print("Encrypted text:", encryptedMsg)

RSAprivateKey = RSA.importKey(privateKey)
OAEP_cipher = PKCS1_OAEP.new(RSAprivateKey)
decryptedMsg = OAEP_cipher.decrypt(encryptedMsg)

print("The original text:", decryptedMsg)
Hinweis
Falls beim Importieren des Moduls Crypto ein Fehler auftritt, können Sie es mit dem Befehl pip install pycrypto installieren.
Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren

Verwandter Artikel - Python Encryption