RSA est un algorithme cryptographique à clé publique. Le texte chiffré de RSA est le résultat de la recherche du mod N à la puissance E du numéro du code en clair. L'article suivant vous présente principalement le didacticiel sur la façon d'utiliser la bibliothèque rsa pour le déchiffrement de clé publique en python. L'article le présente en détail à travers un exemple de code. Les amis qui en ont besoin peuvent s'y référer.
Avant-propos
Pour le décryptage de RSA, c'est-à-dire que la puissance Dth du numéro de texte chiffré est mod N, c'est-à-dire le texte chiffré et Effectuez lui-même D fois la multiplication, puis divisez le résultat par N pour trouver le reste et obtenir le texte en clair. La combinaison de D et N est la clé privée.
Le cryptage et le déchiffrement de l'algorithme sont encore très simples, mais l'algorithme de génération de la clé publique et de la clé privée n'est pas arbitraire. Utilisez la clé publique RSA pour décrypter. La commande openssl est openssl rsautl -verify -in cipher_text -inkey public.pem -pubin -out clear_text Cependant, je n'ai trouvé aucun article de blog sur Internet Python, je hache seulement la signature de décryptage rsa. .
La bibliothèque rsa est utilisée ici. Sinon, vous pouvez la télécharger depuis le site officiel https://pypi.python.org/pypi/rsa/3.1.4.
Pour des méthodes d'installation spécifiques, vous pouvez vous référer ici : http://www.jb51.net/article/70331.htm
Réfléchissez au principe, puis accédez au code python de la bibliothèque rsa pour le trouver, je l'ai recherché, je l'ai extrait du code de vérification et je l'ai testé à nouveau. Tout allait bien.
Le code est le suivant :
#! /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
Vérifiez auprès shell comme suit :
$ 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
Tout va bien Notez que -RSAPublicKey_out doit être utilisé pour extraire la clé publique pem de la clé privée, afin que la première ligne du fichier pem soit et La dernière ligne soit la suivante, afin que rsa.PublicKey.load_pkcs1 la reconnaisse.
Recommandations associées :
Exemples d'implémentation d'opérations de calcul de permutation et de combinaison en Python
Exemples d'implémentation python de binaire recherche et tri rapide Explication détaillée
Exemple de code Python pour l'utilisation de connecteurs d'expression régulière
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!