0% ont trouvé ce document utile (0 vote)
127 vues2 pages

Tp-Projet RSA

L'algorithme RSA est présenté ainsi que ses étapes de génération de clés, chiffrement et déchiffrement. L'objectif est d'implémenter l'algorithme RSA en langage de programmation.

Transféré par

Saly Ka
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
127 vues2 pages

Tp-Projet RSA

L'algorithme RSA est présenté ainsi que ses étapes de génération de clés, chiffrement et déchiffrement. L'objectif est d'implémenter l'algorithme RSA en langage de programmation.

Transféré par

Saly Ka
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP/Projet : L’algorithme RSA

Introduction
Dans ce TP/Projet nous allons implémenter l’algorithme RSA.

Le système de chiffrement RSA a été inventé par trois mathématiciens :


Ron Rivest, Adi Shamir et Len Adleman, en 1977.

L’algorithme RSA est un outil puissant permettant de chiffrer des don-


nées personnelles. Il est aujourd’hui l’algorithme de chiffrement le plus utilisé
(cartes bancaires, transactions, messageries, ...).

Ce TP/Projet ca s’organiser en trois partie :


— Génération des clés.
— Chiffrement.
— Déchiffrement.
Le résultat attendu est le même que la démonstration faite en cours. Le
choix du langage est laissé libre mais une préférence est donnée au langage
C.

Rappel du cours sur le fonctionnement global


Création des clés
1. Choisir deux nombres premiers p et q.
2. Calculer n = p ∗ q et φ = (p − 1)(q − 1)
3. Choisir e premier avec φ
4. Calculer d, inverse de e modulo φ (utliser l’algorithme d’euclide étendu).
Le couple (n, e) est la clé publique, et le couple (n, d) est la clé privée.

Les cofficients de Bézout


Etienne Bézout a démontré que deux nombres a et b sont premiers entre
eux, si et seulement s’il existe des solutions u et v telles que a ∗ u + b ∗ v = 1
(avec u et v entiers). Dans notre cas, φ et e sont premiers entre eux, nous
cherchons donc u dans l’équation e ∗ u + φ ∗ v = 1. Ces valeurs sont appelées
coefficients de Bézout.

1
L’algorithme d’euclide étendu
L’algorithme d’euclide étendu permet, à partir de deux entiers de calculer
non seulement le PGCD de ces deux nombres mais également un des couples
(u, v) de l’équation précédente.
L’algorithme est le suivant :

(int r, int u, int v) = euclide(int a, int b) {


// r = PGCD(a, b) et r = au + bv

r = a; u = 1; v = 0;
int rp = b; int up = 0; int vp = 1;
int q, rs, us, vs;

while (rp != 0) {
q = r / rp;
rs = r; us = u; vs = v;
r = rp; u = up; v = vp;
rp = rs - q * rp; up = us - q * up; vp = vs - q * vp;
}
return (r,u,v)
}

Dans notre cas, 2 < d < φ, donc si d ne convient pas il faut simplement
lui ajouter φ.

Chiffrement
Chiffrer chaque caractère c du texte avec caractère chiffré = ce mod n.

Déchiffrement
Déchiffrer chaque caractère c du texte avec caractère déchiffré = cd
mod n.

Remarques
Quels sont les deux problèmes résultants de cette implémentation ?
Corriger votre programme en conséquence.

Vous aimerez peut-être aussi