j Detaillierte Erläuterung der Python-Methode zur Verwendung der RSA-Bibliothek für die Entschlüsselung öffentlicher Schlüssel

小云云
Freigeben: 2017-12-12 09:16:06
Original
3433 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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

Beispiele für die Python-Implementierung von Binärdateien Suche und schnelle Sortierung Ausführliche Erklärung

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!