RSA-Verschlüsselung in Python

Muhammad Waiz Khan 30 Januar 2023
  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.

Verwandter Artikel - Python Encryption