RSA-Verschlüsselung in Python
- RSA-Verschlüsselung in Python mit einfacher Verschlüsselung
- RSA-Verschlüsselung in Python mit kryptografischem Padding
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)
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)
Crypto
ein Fehler auftritt, können Sie es mit dem Befehl pip install pycrypto
installieren.