Théorie sur le Cryptage RSA

Créer des clés publiques et privées

Création de Clé publique / Privé

Saisir les nombres suivant P,Q et E

Je vous propose de suivre les étapes suivantes pour créer vos propres paires de clés privé/publique avec de très grands nombres. Il faudra ajuster la valeur de E à l'étape 4 afin de vérifier que E est premier avec R. E sera un des composants de la clé privé. Il est possible ensuite de transmettre ces clés sur la page de cryptage/décryptage.

Etape 1
Saisir un nombre premier P Liste de nombres et Rechercher des nombres
Etape 2
Saisir un nombre premier Q
Etape 3
Primalité entre P et Q :
N = P * Q
P : ()
*
Q : ()
=
N =
R = (P-1) * (Q-1)
P-1= ()
*
Q-1= ()
=
R =
Etape 4
P,Q < Saisir un nombre E < R
Etape 5 Tester la primalité entre N et E :

Calcule du coeffient D

Les coefficents D et k sont détermninés par l'équation E*D+ k*R = 1. L'algorythme d'Euclide étendu permet d'obtenir le résultat de ces coefficients. D sera un des composants de la clé publique.


Etape 6 Etape 7
Algorithme d'Euclide : R premier avec E. Algorithme d'Euclide etendu : le coefficient D.
R =
* 1 + * 0
E =
* 0 + * 1





Visualisation des paires de clés privé/publique


Transmettre les paires de clés sur la page Cryptage/Décryptage

Publique Privé
Clé Publique : Couple { N , E }

N =

E =

Clé Privée : Couple { N , D }

N =

D =

Cryptage/Décryptage via les Couples de Clés créees

► Dans le cadre de la vérification de signature, la signaure K est obtenue en cryptant le Haché avec la clé privé. A l'inverse on décrypte la signature grâce à la clé publique.

► Saisir le méssage à crypter M (équivalent du haché):



► Le code Ascii d'un caratère est défini sur 3 chiffres en décimal. On va concaténer ces blocs de 3 chiffres pour former des nombres ayant pour nombre de chiffres 3*X inférieur au nombre de chiffre du nombre N.

► code ASCII du méssage saisie :



► Cryptage bloc par bloc des codes ASCII concaténés avec C= M^D mod N :



► Décryptage bloc par bloc du crytage: M= C^E mod N



► Récupération des caractères ASCII :