Heim >Backend-Entwicklung >Python-Tutorial >j Detaillierte Erläuterung der Python-Methode zur Verwendung der RSA-Bibliothek für die Entschlüsselung öffentlicher Schlüssel
RSA ist ein kryptografischer Algorithmus mit öffentlichem Schlüssel. Der Chiffretext von RSA ist das Ergebnis der Ermittlung von Mod N hoch E der Zahl des Klartextcodes. Der folgende Artikel stellt Ihnen hauptsächlich das Tutorial zur Verwendung der RSA-Bibliothek für die Entschlüsselung öffentlicher Schlüssel in Python vor. Freunde, die es benötigen, können darauf zurückgreifen.
Vorwort
Für die Entschlüsselung von RSA ist die D-te Potenz der Chiffretextzahl mod N, also der Chiffretext und selbst Führen Sie eine D-fache Multiplikation durch und dividieren Sie dann das Ergebnis durch N, um den Rest zu ermitteln und den Klartext zu erhalten. Die Kombination aus D und N ist der private Schlüssel.
Die Ver- und Entschlüsselung des Algorithmus ist immer noch sehr einfach, aber der Algorithmus zum Generieren des öffentlichen Schlüssels und des privaten Schlüssels ist nicht willkürlich. Verwenden Sie zum Entschlüsseln den öffentlichen RSA-Schlüssel. Der Befehl openssl lautet openssl rsautl -verify -in cipher_text -inkey public.pem -pubin -out clear_text. Ich habe jedoch keine Blog-Beiträge im Python-Internet gefunden, sondern nur die Hash-RSA-Entschlüsselungssignatur .
Hier wird die RSA-Bibliothek verwendet. Wenn nicht, können Sie sie von der offiziellen Website https://pypi.python.org/pypi/rsa/3.1.4 herunterladen.
Informationen zu bestimmten Installationsmethoden finden Sie hier: http://www.jb51.net/article/70331.htm
Denken Sie über das Prinzip nach und gehen Sie dann zum Python-Code von Um es zu finden, habe ich die RSA-Bibliothek durchsucht, es aus dem Verifizierungscode extrahiert und es erneut getestet. Alles war in Ordnung.
Der Code lautet wie folgt:
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys #rsa from rsa import PublicKey, common, transform, core def f(cipher, PUBLIC_KEY): public_key = PublicKey.load_pkcs1(PUBLIC_KEY) encrypted = transform.bytes2int(cipher) decrypted = core.decrypt_int(encrypted, public_key.e, public_key.n) text = transform.int2bytes(decrypted) if len(text) > 0 and text[0] == '\x01': pos = text.find('\x00') if pos > 0: return text[pos+1:] else: return None fn = sys.stdin.readline()[:-1] public_key = sys.stdin.readline()[:-1] x = f(open(fn).read(), open(public_key).read()) print x
Verifizieren Sie mit Shell wie folgt:
$ openssl genrsa -out pri2048.pem 2048 Generating RSA private key, 2048 bit long modulus ..+++ ..............................................+++ e is 65537 (0x10001) $ openssl rsa -in pri2048.pem -out pub2048.pem -RSAPublicKey_out writing RSA key $ echo -n 'Just a test' >1.txt $ openssl rsautl -sign -in 1.txt -inkey pri2048.pem -out 1.bin $ { echo 1.bin; echo pub2048.pem; } | ./test_rsa.py Just a test
Alles ist in Ordnung. Beachten Sie, dass -RSAPublicKey_out verwendet werden muss, um den öffentlichen Schlüssel pem aus dem privaten Schlüssel zu extrahieren. damit die erste Zeile der PEM-Datei lautet und Die letzte Zeile lautet wie folgt, damit rsa.PublicKey.load_pkcs1 es erkennt.
Verwandte Empfehlungen:
Beispiele für die Implementierung von Permutations- und Kombinationsberechnungsoperationen in Python
Pythons Beispielcode für die Verwendung von Konnektoren für reguläre Ausdrücke
Das obige ist der detaillierte Inhalt vonj Detaillierte Erläuterung der Python-Methode zur Verwendung der RSA-Bibliothek für die Entschlüsselung öffentlicher Schlüssel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!