SlideShare uma empresa Scribd logo
1 de 8
Etude et Implémentation de RSAENSA-Tanger3384553129915Encadré par : Pr. S.LAZAARRéalisé par : COHEN AchrafYACOUBOU S. Bouraima<br />Algorithme RSA :<br />Présentation:<br />Le RSA a été inventé par Rivest, Shamir et Adleman en 1978. C’est l’exemple le plus courant de cryptographie asymétrique, toujours considéré comme sûr, avec la technologie actuelle, pour des clés suffisamment grosses (1024, 2048 voire 4096 bits). D’ailleurs le RSA128 (algorithme avec des cl´es de 128 bits), propos´e en 1978 par Rivest, Shamir et Adleman, n’a été “cassé” qu’en 1996, en faisant travailler en parallèle de nombreux ordinateurs sur internet. Mais le concept de chiffrement asymétrique avec une clef publique était légèrement antérieur (1976). L’idée générale était de trouver deux fonctions f et g sur les entiers, telles que fog = Id, et telle que l’on ne puisse pas trouver f, la fonction de décryptage, à partir de g, la fonction de cryptage. L’on peut alors rendre publique la fonction g (ou clef), qui permettra aux autres de crypter le message à envoyer, tout en étant les seuls à connaître f, donc à pouvoir décrypter. On trouvera un expos´e complet sur RSA.<br />Description du protocole :<br />Le but du jeu est bien sûr de pouvoir transmettre un message codé, que seul le récepteur “officiel” puisse décrypter,  c’est-`a-dire qui ne puisse pas être décrypté par un tiers qui intercepterait ledit message. Nous appellerons Alice la destinatrice du message, et Bernard l’´emetteur.<br />Alice génère deux gros nombres premiers p et q, ainsi qu’un gros nombre d premier avec le produit w = (p − 1) (q − 1).<br />Alice calcule n = pq et e tel que de Ξ 1[w].<br />Alice diffuse n et e, garde d et oublie w.<br />Bernard crypte un message M par M => Me[n] et envoie le résultat à Alice.<br />Alice décode alors le message crypté par C => Cd[n]<br />Exemple : <br />Voyons ce qui se passe si l’on prend pour les deux nombres p et q les valeurs 11 et 17. <br />On a alors n = 187 et w = (11 − 1) (17 − 1) = 160. <br />Comme : 161 = 7 × 23, on peut prendre e = 7 et d = 23. <br />Alice va rendre public le couple (187, 7).<br />Bernard veut transmettre à Alice un message codé plus petit que n = 187, mettons la date à  laquelle ils vont faire une surprise à  Cédric (par exemple, le 10), message qui ne doit pas être intercepté par ledit Cédric, bien sûr.<br />Bernard va donc calculer 107 = 187×53475+175, et envoyer le résultat 175 à Alice.<br />Alice va calculer le reste de la division euclidienne de 17523 par 187 :<br />– Elle calcule d’abord 1752 = 30625 = 163×187+144, donc 1752 Ξ144[187].<br />– Ensuite, 1442 = 20736 = 110 × 187 + 166, donc 1754 Ξ 166[187].<br />– Puis, 1662 = 27556 = 147 × 187 + 67 donc 1758 Ξ 67[187].<br />– Et 672 = 4489 = 24 × 187 + 1 donc 17516 Ξ 1[187].<br />– Enfin, 17523 = 17516 × 1754 × 1752 × 175 donc<br />17523 _ 1 × 166 × 144 × 175[187]<br />Or 166 × 144 × 175 = 4183200 = 22370 × 187 + 10.<br />Alice retrouve donc bien le message envoyé, à savoir 10.<br />Implémentation en JAVA :<br /> Dans cette partie nous présentons notre code Java permettant de manipuler les différentes fonctions de l’algorithme RSA, comme le montre le schéma ci-dessous :<br />Le code source détaillé :<br />package gstr.rsa;<br />import java.io.IOException;<br />import java.math.BigInteger;<br />import java.util.Random;<br />import java.util.Scanner;<br />public class rsa {<br />public static void main(String[] args) throws IOException <br />{<br />System.out.print(quot;
Saisir le message :quot;
);<br />Scanner sc = new Scanner(System.in);<br />String M =sc.nextLine();<br />int P, Q, Z, E, D;<br />BigInteger N;<br />//Générer P et Q<br />P=generateP();<br />Q=generateP();<br />//calcul N<br />N=BigInteger.valueOf(P).multiply(BigInteger.valueOf(Q));<br />//calcul Z<br />Z=(P-1)*(Q-1); <br />//recherche E et D<br />E=rechercheE(Z);<br />D=rechercheD(E,Z);<br />System.out.println(quot;
P=quot;
+P);<br />System.out.println(quot;
Q=quot;
+Q);<br />System.out.println(quot;
N=quot;
+N+quot;
 et Z=quot;
+Z);<br />System.out.println(quot;
E=quot;
+E);<br />System.out.println(quot;
D=quot;
+D);<br />System.out.println(quot;
Le Message :quot;
+M);<br />byte[] Me=M.getBytes(quot;
ASCIIquot;
);<br />System.out.print(quot;
Le Message en ASCII :quot;
);<br />for(int k=0; k<M.length();k++)<br />{<br />System.out.print(Me[k]+quot;
  quot;
);<br />}<br />BigInteger[] c =new BigInteger[M.length()];<br />c=crypte(M,E,N);<br />System.out.print(quot;
Le message Crypté :quot;
);<br />for(int l=0; l<M.length(); l++)<br />       {<br />     System.out.print(c[l]+quot;
  quot;
);<br />                        <br />       }<br />BigInteger[] dec =new BigInteger[M.length()];<br />dec=decrypte(c,D,N);<br />System.out.print(quot;
Le message Decrypté :quot;
);<br />for(int l=0; l<c.length; l++)<br />       {<br />     System.out.print(dec[l]+quot;
  quot;
);                    <br />       }<br />System.out.print(quot;
Le message en Clair:quot;
);<br />for(int l=0; l<c.length; l++)<br />       {<br />String pa= dec[l].toString();<br />int ii= Integer.parseInt(pa);<br />String aChar = new Character((char)ii).toString();<br />System.out.print(aChar);<br />       }<br />}<br />// la fonction permettant de déchiffrer le message chiffré<br />public static BigInteger[] decrypte(BigInteger c[],int d, BigInteger n) throws IOException<br />{<br />BigInteger[] dec= new BigInteger[c.length];<br />for(int i=0; i<c.length;i++)<br />{<br />dec[i]=(c[i].pow(d)).mod(n);<br />//System.out.println((c[i].pow(d)));<br />}<br />return dec;<br />}<br />// la fonction permettant de chiffrer le message<br />public static BigInteger[] crypte(String ch, int e, BigInteger n) throws IOException<br />{<br />byte[] Me=ch.getBytes(quot;
ASCIIquot;
);<br />BigInteger[] c= new BigInteger[ch.length()];<br />for(int i=0; i<ch.length();i++)<br />{<br />c[i]=(BigInteger.valueOf(Me[i]).pow(e)).mod(n);<br />}<br />return c;<br />}<br />// permet de rechercher le paramètre e<br />public static int rechercheE(int z){<br />int e;<br />for(e=1;e<z;e++)<br />{<br />if(z%e!=0)<br />{<br />break;<br />}<br />}<br />return e;<br />}<br />// permet de rechercher le paramètre d<br />public static int rechercheD(int e, int z){<br />        int d;<br />        for(d=1;d<z;d++)<br />        {<br />            int p=d*e;<br />            if(p%z==1)<br />            {<br />           break;<br />            }<br />        }<br />return d;<br />} <br />// permet de generer les P et Q<br />public static int generateP(){<br />int P;<br />do{<br />P=generate();<br />}<br />while(!isFirst(P) || P<10);<br />return P;<br />}<br />// permet de verfier paire/impaire<br />public static boolean isFirst(int p)<br />{<br />boolean b=true;<br />int i;<br />for(i=2; (i<=p/2) && (p%i!=0);i++);<br />if(p%i==0) b=false;<br />else b=true;<br />return b;<br />}<br />// genere un nombre aléatoire<br />public static int generate()<br />{<br />int p;<br />Random rn = new Random();<br />p=rn.nextInt(200);<br />return p;<br />}<br />}<br />-577215433705Démonstration :<br />D’après le schéma ci-dessus, on retrouve le message chiffré souhaité.<br />Client/serveur RSA :<br />Dans cette partie nous abordons une autre façon de l’utilisation de l’algorithme RSA, il s’agit de deux personnes distantes qui s’échangent des messages cryptés à l’aide de l’algorithme RSA.<br />Pour ce, nous avons crée un programme Java basé sur les Sockets et suivant l’architecture Client/Serveur qui permet de communiquer de façon sécurisée.<br />Les classes sont jointes à ce rapport.<br />Démonstration :<br />-732155477520<br />            ClientServeur<br />Dans cette démo le client a demandé la clé publique du serveur qui la lui a envoyée, ensuite le client a envoyé son message chiffré à l’aide de la clé publique du serveur. A la réception le serveur a déchiffré le message reçu à l’aide de sa clé privée.<br />N.B : à noter que toute l’opération se déroule en temps réel.<br />Conclusion :<br />Ce TP nous a permis de comprendre et de manipuler l’algorithme RSA ; son implémentation en Java a été la partie la plus intéressante car elle constitue la mise en pratique des connaissances acquises durant le cours de la cryptographie. <br />
Rapport  tp  RSA
Rapport  tp  RSA
Rapport  tp  RSA
Rapport  tp  RSA
Rapport  tp  RSA
Rapport  tp  RSA
Rapport  tp  RSA

Mais conteúdo relacionado

Mais procurados

Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximationmohamed_SAYARI
 
1 entropie-capacite theorie de l'information
1 entropie-capacite theorie de l'information1 entropie-capacite theorie de l'information
1 entropie-capacite theorie de l'informationAbdou Obado
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)abdellah12
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Hichem Kemali
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018salah fenni
 
Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)WaelTOUMI2
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-sEttaoufik Elayedi
 
Analyse numérique interpolation
Analyse numérique interpolationAnalyse numérique interpolation
Analyse numérique interpolationJaouad Dabounou
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerSana Aroussi
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitésalah fenni
 

Mais procurados (20)

Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximation
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Examen 2011 exo 4
Examen 2011 exo 4Examen 2011 exo 4
Examen 2011 exo 4
 
DCT1 4SI
DCT1  4SIDCT1  4SI
DCT1 4SI
 
1 entropie-capacite theorie de l'information
1 entropie-capacite theorie de l'information1 entropie-capacite theorie de l'information
1 entropie-capacite theorie de l'information
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018
 
Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)
 
Fic00001
Fic00001Fic00001
Fic00001
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s
 
Analyse numérique interpolation
Analyse numérique interpolationAnalyse numérique interpolation
Analyse numérique interpolation
 
Baccaleaureat
BaccaleaureatBaccaleaureat
Baccaleaureat
 
246242769 sequence-1-pdf
246242769 sequence-1-pdf246242769 sequence-1-pdf
246242769 sequence-1-pdf
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
bac info : série récursivité
bac info : série récursivitébac info : série récursivité
bac info : série récursivité
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
 
S2- Math
S2- Math S2- Math
S2- Math
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivité
 

Semelhante a Rapport tp RSA

Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)Frank Nielsen
 
Le cryptage et le décryptage
Le cryptage et le décryptageLe cryptage et le décryptage
Le cryptage et le décryptageSKYWARE COMPAGNY
 
CryptographieRSA.pdf
CryptographieRSA.pdfCryptographieRSA.pdf
CryptographieRSA.pdfTrust22
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMALoic Yon
 
Ateliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduinoAteliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduinoFatima Zahra Fagroud
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsAurélien Regat-Barrel
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage ccoursuniv
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdfAliouDiallo24
 
Wygday 2011 - C#5 Async CTP - Reactive Extensions
Wygday 2011  - C#5 Async CTP - Reactive ExtensionsWygday 2011  - C#5 Async CTP - Reactive Extensions
Wygday 2011 - C#5 Async CTP - Reactive Extensionswyggio
 
Lect14 dev2
Lect14 dev2Lect14 dev2
Lect14 dev2moisko
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage Ccoursuniv
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScriptHabib Ayad
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Alexis Sukrieh
 
Future of java script web version
Future of java script web versionFuture of java script web version
Future of java script web versionSébastien Pertus
 
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017Romaric Saounde Tsopnang
 
Scala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnellesScala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnellesSamy Zarour
 

Semelhante a Rapport tp RSA (20)

Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)
 
Le cryptage et le décryptage
Le cryptage et le décryptageLe cryptage et le décryptage
Le cryptage et le décryptage
 
CryptographieRSA.pdf
CryptographieRSA.pdfCryptographieRSA.pdf
CryptographieRSA.pdf
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 
Tp rsa1
Tp rsa1Tp rsa1
Tp rsa1
 
Ateliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduinoAteliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduino
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomics
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
 
Wygday 2011 - C#5 Async CTP - Reactive Extensions
Wygday 2011  - C#5 Async CTP - Reactive ExtensionsWygday 2011  - C#5 Async CTP - Reactive Extensions
Wygday 2011 - C#5 Async CTP - Reactive Extensions
 
Lect14 dev2
Lect14 dev2Lect14 dev2
Lect14 dev2
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScript
 
Algo poo ts
Algo poo tsAlgo poo ts
Algo poo ts
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
 
Future of java script web version
Future of java script web versionFuture of java script web version
Future of java script web version
 
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
 
Scala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnellesScala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnelles
 
Trivial Java - Part 2
Trivial Java - Part 2Trivial Java - Part 2
Trivial Java - Part 2
 

Último

GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfAmgdoulHatim
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxabdououanighd
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetJeanYvesMoine
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxShinyaHilalYamanaka
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKNassimaMdh
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsJaouadMhirach
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxhamzagame
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxikospam0
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Technologia Formation
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Coursebenezerngoran
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkRefRama
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLElebaobabbleu
 

Último (20)

GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Cours
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 

Rapport tp RSA

  • 1. Etude et Implémentation de RSAENSA-Tanger3384553129915Encadré par : Pr. S.LAZAARRéalisé par : COHEN AchrafYACOUBOU S. Bouraima<br />Algorithme RSA :<br />Présentation:<br />Le RSA a été inventé par Rivest, Shamir et Adleman en 1978. C’est l’exemple le plus courant de cryptographie asymétrique, toujours considéré comme sûr, avec la technologie actuelle, pour des clés suffisamment grosses (1024, 2048 voire 4096 bits). D’ailleurs le RSA128 (algorithme avec des cl´es de 128 bits), propos´e en 1978 par Rivest, Shamir et Adleman, n’a été “cassé” qu’en 1996, en faisant travailler en parallèle de nombreux ordinateurs sur internet. Mais le concept de chiffrement asymétrique avec une clef publique était légèrement antérieur (1976). L’idée générale était de trouver deux fonctions f et g sur les entiers, telles que fog = Id, et telle que l’on ne puisse pas trouver f, la fonction de décryptage, à partir de g, la fonction de cryptage. L’on peut alors rendre publique la fonction g (ou clef), qui permettra aux autres de crypter le message à envoyer, tout en étant les seuls à connaître f, donc à pouvoir décrypter. On trouvera un expos´e complet sur RSA.<br />Description du protocole :<br />Le but du jeu est bien sûr de pouvoir transmettre un message codé, que seul le récepteur “officiel” puisse décrypter, c’est-`a-dire qui ne puisse pas être décrypté par un tiers qui intercepterait ledit message. Nous appellerons Alice la destinatrice du message, et Bernard l’´emetteur.<br />Alice génère deux gros nombres premiers p et q, ainsi qu’un gros nombre d premier avec le produit w = (p − 1) (q − 1).<br />Alice calcule n = pq et e tel que de Ξ 1[w].<br />Alice diffuse n et e, garde d et oublie w.<br />Bernard crypte un message M par M => Me[n] et envoie le résultat à Alice.<br />Alice décode alors le message crypté par C => Cd[n]<br />Exemple : <br />Voyons ce qui se passe si l’on prend pour les deux nombres p et q les valeurs 11 et 17. <br />On a alors n = 187 et w = (11 − 1) (17 − 1) = 160. <br />Comme : 161 = 7 × 23, on peut prendre e = 7 et d = 23. <br />Alice va rendre public le couple (187, 7).<br />Bernard veut transmettre à Alice un message codé plus petit que n = 187, mettons la date à laquelle ils vont faire une surprise à Cédric (par exemple, le 10), message qui ne doit pas être intercepté par ledit Cédric, bien sûr.<br />Bernard va donc calculer 107 = 187×53475+175, et envoyer le résultat 175 à Alice.<br />Alice va calculer le reste de la division euclidienne de 17523 par 187 :<br />– Elle calcule d’abord 1752 = 30625 = 163×187+144, donc 1752 Ξ144[187].<br />– Ensuite, 1442 = 20736 = 110 × 187 + 166, donc 1754 Ξ 166[187].<br />– Puis, 1662 = 27556 = 147 × 187 + 67 donc 1758 Ξ 67[187].<br />– Et 672 = 4489 = 24 × 187 + 1 donc 17516 Ξ 1[187].<br />– Enfin, 17523 = 17516 × 1754 × 1752 × 175 donc<br />17523 _ 1 × 166 × 144 × 175[187]<br />Or 166 × 144 × 175 = 4183200 = 22370 × 187 + 10.<br />Alice retrouve donc bien le message envoyé, à savoir 10.<br />Implémentation en JAVA :<br /> Dans cette partie nous présentons notre code Java permettant de manipuler les différentes fonctions de l’algorithme RSA, comme le montre le schéma ci-dessous :<br />Le code source détaillé :<br />package gstr.rsa;<br />import java.io.IOException;<br />import java.math.BigInteger;<br />import java.util.Random;<br />import java.util.Scanner;<br />public class rsa {<br />public static void main(String[] args) throws IOException <br />{<br />System.out.print(quot; Saisir le message :quot; );<br />Scanner sc = new Scanner(System.in);<br />String M =sc.nextLine();<br />int P, Q, Z, E, D;<br />BigInteger N;<br />//Générer P et Q<br />P=generateP();<br />Q=generateP();<br />//calcul N<br />N=BigInteger.valueOf(P).multiply(BigInteger.valueOf(Q));<br />//calcul Z<br />Z=(P-1)*(Q-1); <br />//recherche E et D<br />E=rechercheE(Z);<br />D=rechercheD(E,Z);<br />System.out.println(quot; P=quot; +P);<br />System.out.println(quot; Q=quot; +Q);<br />System.out.println(quot; N=quot; +N+quot; et Z=quot; +Z);<br />System.out.println(quot; E=quot; +E);<br />System.out.println(quot; D=quot; +D);<br />System.out.println(quot; Le Message :quot; +M);<br />byte[] Me=M.getBytes(quot; ASCIIquot; );<br />System.out.print(quot; Le Message en ASCII :quot; );<br />for(int k=0; k<M.length();k++)<br />{<br />System.out.print(Me[k]+quot; quot; );<br />}<br />BigInteger[] c =new BigInteger[M.length()];<br />c=crypte(M,E,N);<br />System.out.print(quot; Le message Crypté :quot; );<br />for(int l=0; l<M.length(); l++)<br /> {<br /> System.out.print(c[l]+quot; quot; );<br /> <br /> }<br />BigInteger[] dec =new BigInteger[M.length()];<br />dec=decrypte(c,D,N);<br />System.out.print(quot; Le message Decrypté :quot; );<br />for(int l=0; l<c.length; l++)<br /> {<br /> System.out.print(dec[l]+quot; quot; ); <br /> }<br />System.out.print(quot; Le message en Clair:quot; );<br />for(int l=0; l<c.length; l++)<br /> {<br />String pa= dec[l].toString();<br />int ii= Integer.parseInt(pa);<br />String aChar = new Character((char)ii).toString();<br />System.out.print(aChar);<br /> }<br />}<br />// la fonction permettant de déchiffrer le message chiffré<br />public static BigInteger[] decrypte(BigInteger c[],int d, BigInteger n) throws IOException<br />{<br />BigInteger[] dec= new BigInteger[c.length];<br />for(int i=0; i<c.length;i++)<br />{<br />dec[i]=(c[i].pow(d)).mod(n);<br />//System.out.println((c[i].pow(d)));<br />}<br />return dec;<br />}<br />// la fonction permettant de chiffrer le message<br />public static BigInteger[] crypte(String ch, int e, BigInteger n) throws IOException<br />{<br />byte[] Me=ch.getBytes(quot; ASCIIquot; );<br />BigInteger[] c= new BigInteger[ch.length()];<br />for(int i=0; i<ch.length();i++)<br />{<br />c[i]=(BigInteger.valueOf(Me[i]).pow(e)).mod(n);<br />}<br />return c;<br />}<br />// permet de rechercher le paramètre e<br />public static int rechercheE(int z){<br />int e;<br />for(e=1;e<z;e++)<br />{<br />if(z%e!=0)<br />{<br />break;<br />}<br />}<br />return e;<br />}<br />// permet de rechercher le paramètre d<br />public static int rechercheD(int e, int z){<br /> int d;<br /> for(d=1;d<z;d++)<br /> {<br /> int p=d*e;<br /> if(p%z==1)<br /> {<br /> break;<br /> }<br /> }<br />return d;<br />} <br />// permet de generer les P et Q<br />public static int generateP(){<br />int P;<br />do{<br />P=generate();<br />}<br />while(!isFirst(P) || P<10);<br />return P;<br />}<br />// permet de verfier paire/impaire<br />public static boolean isFirst(int p)<br />{<br />boolean b=true;<br />int i;<br />for(i=2; (i<=p/2) && (p%i!=0);i++);<br />if(p%i==0) b=false;<br />else b=true;<br />return b;<br />}<br />// genere un nombre aléatoire<br />public static int generate()<br />{<br />int p;<br />Random rn = new Random();<br />p=rn.nextInt(200);<br />return p;<br />}<br />}<br />-577215433705Démonstration :<br />D’après le schéma ci-dessus, on retrouve le message chiffré souhaité.<br />Client/serveur RSA :<br />Dans cette partie nous abordons une autre façon de l’utilisation de l’algorithme RSA, il s’agit de deux personnes distantes qui s’échangent des messages cryptés à l’aide de l’algorithme RSA.<br />Pour ce, nous avons crée un programme Java basé sur les Sockets et suivant l’architecture Client/Serveur qui permet de communiquer de façon sécurisée.<br />Les classes sont jointes à ce rapport.<br />Démonstration :<br />-732155477520<br /> ClientServeur<br />Dans cette démo le client a demandé la clé publique du serveur qui la lui a envoyée, ensuite le client a envoyé son message chiffré à l’aide de la clé publique du serveur. A la réception le serveur a déchiffré le message reçu à l’aide de sa clé privée.<br />N.B : à noter que toute l’opération se déroule en temps réel.<br />Conclusion :<br />Ce TP nous a permis de comprendre et de manipuler l’algorithme RSA ; son implémentation en Java a été la partie la plus intéressante car elle constitue la mise en pratique des connaissances acquises durant le cours de la cryptographie. <br />