Mit RSA Texte ver- und entschlüsseln.
Bibliothek herunterladen
Um die RSA-Verschlüsselung verwenden zu können, wird die folgende Datei benötigt. Sie muss im Projektverzeichnis gespeichert werden, damit die Einbindung klappt.
Die Datei liegt absichtlich in einem binären Format vor, so dass der Code nicht gelesen werden kann, da einige Zusatzaufträge zur eigenen Implementation der angebotenen Funktionalität auffordern.
Bibliothek importieren
Die Bibliothek kann mit dem bekannten import-Befehl importiert werden:
import rsaVerfügbare Funktionen
encrypt_text()
Diese Funktion verschlüsselt einen Klartext mit dem öffentlichen Schlüssel.
rsa.encrypt_text(plaintext, exponent, modulus)- Parameter
plaintext
Der zu verschlüsselnde Klartext als String.exponent
Der zu verwendende öffentliche Exponent alsint.modulus
Der zu verwendende Modulus alsint.- Rückgabewert
- Die Funktion liefert als Resultat den verschlüsselten Text als String (Base64-codiert).
encrypt()
Diese Funktion verschlüsselt eine Mitteilung (die als Zahl vorliegt) mit dem öffentlichen Schlüssel.
rsa.encrypt(message, exponent, modulus)- Parameter
message
Die zu verschlüsselnde Mitteilung alsint.exponent
Der zu verwendende öffentliche Exponent alsint.modulus
Der zu verwendende Modulus alsint.- Rückgabewert
- Die Funktion liefert als Resultat die verschlüsselte Mitteilung als
int.
decrypt_text()
Diese Funktion entschlüsselt einen Geheimtext (Base64-codiert) mit dem privaten Schlüssel.
rsa.decrypt_text(ciphertext, exponent, modulus)- Parameter
ciphertext
Der zu entschlüsselnde Geheimtext als String (Base64-codiert).exponent
Der zu verwendende private Exponent alsint.modulus
Der zu verwendende Modulus alsint.- Rückgabewert
- Die Funktion liefert als Resultat den entschlüsselten Text als String.
decrypt()
Diese Funktion entschlüsselt eine Mitteilung (die als Zahl vorliegt) mit dem privaten Schlüssel.
rsa.decrypt(message, exponent, modulus)- Parameter
message
Die zu entschlüsselnde Mitteilung alsint.exponent
Der zu verwendende private Exponent alsint.modulus
Der zu verwendende Modulus alsint.- Rückgabewert
- Die Funktion liefert als Resultat die entschlüsselte Mitteilung als
int.
generate_keypair()
Diese Funktion generiert ein RSA-Schlüsselpaar mit einer bestimmten Länge. Das Schlüsselpaar besteht aus deinem öffentlichen Exponenten, einem privaten Exponenten und einem Modulus.
rsa.generate_keypair(num_digits)- Parameter
num_digits
Die Anzahl Stellen der zu generierenden Primzahlen alsint.- Rückgabewert
- Die Funktion liefert als Resultat drei Werte zurück:
den öffentlichen Exponenten alsint.
den privaten Exponenten alsint.
den Modulus alsint.
Verwendung:
Um die drei Werte (die als Tupel zurückgegeben werden) in drei einzelnen Varaiblen e, d und n zu speichern, kann folgendermassen vorgegangen werden:
e, d, n = rsa.generate_keypair(10)mod_inv()
Diese Funktion berechnet das multiplikative Inverse der Zahl a modulo m. Diese Funktion wurde erstellt, weil die Funktion pow() von Python vor Version 3.8 noch nicht ein Modulo-Inverses berechnen kann. Ab Python 3.8 wird direkt pow(a, -1, m) aufgerufen.
rsa.mod_inv(a, m)- Parameter
a
Die Zahl alsint, deren Modulo-Inverses berechnet werden soll.m
Der Modulus alsint.- Rückgabewert
- Die Funktion liefert als Resultat das multiplikative Inverse der Zahl
amodulom.
base64_to_number()
Diese Funktion wandelt den angebenen Base64-codierten Wert b64 in eine Zahl um. Diese Funktion wird ganz zu Beginn beim Entschlüsseln eines Klartextes in der Funktion rsa.decrypt_text() aufgerufen.
rsa.base64_to_number(b64)- Parameter
b64
Der Base64-codierte Wert, der in eine Zahl zurückverwandelt werden soll.- Rückgabewert
- Die Funktion liefert als Resultat die Zahl, die zuvor Base64-codiert wurde, als
int-Wert.
number_to_base4()
Diese Funktion wandelt die angegebene Zahl number in einen Base64-codierten Wert um. Diese Funktion wird ganz am Schluss beim Verschlüsseln einer Nachricht in der Funktion rsa.encrypt_text() aufgerufen, damit der Geheimtext in Form von darstellbaren Zeichen zurückgegeben werden kann.
rsa.number_to_base4(number)- Parameter
number
Die Zahl, die Base64-codiert werden soll.- Rückgabewert
- Die Funktion liefert als Resultat die Base64-codierte Darstellung der angegebenen Zahl als String zurück.
text_to_number()
Diese Funktion wandelt den angebenen String b64 in eine Zahl um. Diese Funktion wird ganz zu Beginn beim Verschlüsseln eines Klartextes in der Funktion rsa.encrypt_text() aufgerufen, um sämtliche Zeichen des Klartextes in deren ASCII-Code umzuwandeln und aneinanderzureihen.
rsa.text_to_number(text)- Parameter
text
Der Text, der in eine Zahl verwandelt werden soll.- Rückgabewert
- Die Funktion liefert als Resultat die Ganzzahl-Darstellung des Klartextes als
int-Wert zurück.
number_to_text()
Diese Funktion wandelt die angegebene Zahl number in einen String um. Diese Funktion wird ganz am Schluss beim Entschlüsseln einer Nachricht in der Funktion rsa.decrypt_text() aufgerufen, damit der Klartext in seiner normalen Form als String zurückgegeben werden kann. Dabei werden stets die hintersten 3 Stellen abgeschnitten und als ASCII-Code des gesuchten Zeichens interpretiert.
rsa.number_to_text(number)- Parameter
number
Die Zahl, die in einen Text umgewandelt werden soll.- Rückgabewert
- Die Funktion liefert als Resultat die Darstellung der angegebenen Zahl als String zurück.