Chiffrer un String avec RSA - Java - Programmation
MarshPosté le 23-04-2007 à 21:17:04
Bonsoir
Alors voila, j'ai un petit soucis :
j'ai fais pas mal de recherches mais je n'ai toujours pas trouvé de solution à mon problème :
Je voudrais chiffrer un String à l'aide du RSA.
J'ai fait comme ça, en gros, pour obtenir une pair de clés privé/publique :
Code :
KeyPairGenerator pairCle;
pairCle = KeyPairGenerator.getInstance("RSA" );
this.clefPublique = pair.getPublic();
this.clefPrivee = pair.getPrivate();
J'ai donc une clé publique en ma possession, et j'aimerais chiffrer un String avec, de maniere simple. (en gros, quelque chose qui fait un truc du style :
Citation :
2. Chiffrement
Bob veut donc envoyer un message à Alice. Il cherche dans l'annuaire la clef de chiffrement qu'elle a publiée. Il sait maintenant qu'il doit utiliser le système RSA avec les deux entiers n et e (prenons par exemple n=5141=53·97 et e=7, premier avec 52·96=4992). Il transforme en nombres son message en remplaçant par exemple chaque lettre par son rang dans l'alphabet.
Puis il découpe son message chiffré en blocs de même longueur représentant chacun un nombre plus petit que n. Cette opération est essentielle, car si on ne faisait pas des blocs assez longs (par exemple si on laissait des blocs de 2 dans notre exemple), on retomberait sur un simple chiffre de substitution que l'on pourrait attaquer par l'analyse des fréquences.
Son message devient : "010 052 215 211 901 091 305"
Un bloc B est chiffré par la formule C = Be mod n, où C est un bloc du message chiffré que Bob enverra à Alice.
Après avoir chiffré chaque bloc, le message chiffré s'écrit : "0755 1324 2823 3550 3763 2237 2052".
3. Déchiffrement
Alice calcule à partir de p et q, qu'elle a gardés secrets, la clef d de déchiffrage (c'est sa clef privée). Celle-ci doit satisfaire l'équation e·d mod ((p-1)(q-1)) = 1. Ici, d=4279. Chacun des blocs C du message chiffré sera déchiffré par la formule B = Cd mod n.
Elle retrouve : "010 052 215 211 901 091 305"
L'instruction d=PowerMod[e,-1,(p-1)(q-1)] de Mathematica permet de calculer d facilement.
En regroupant les chiffres deux par deux et en remplaçant les nombres ainsi obtenus par les lettres correspondantes, elle sait enfin que Bob l'aime secrètement, sans que personne d'autre ne puisse le savoir.
Marsh Posté le 23-04-2007 à 21:17:04
Bonsoir
Alors voila, j'ai un petit soucis :
j'ai fais pas mal de recherches mais je n'ai toujours pas trouvé de solution à mon problème :
Je voudrais chiffrer un String à l'aide du RSA.
J'ai fait comme ça, en gros, pour obtenir une pair de clés privé/publique :
J'ai donc une clé publique en ma possession, et j'aimerais chiffrer un String avec, de maniere simple.
(en gros, quelque chose qui fait un truc du style :
2. Chiffrement
Bob veut donc envoyer un message à Alice. Il cherche dans l'annuaire la clef de chiffrement qu'elle a publiée. Il sait maintenant qu'il doit utiliser le système RSA avec les deux entiers n et e (prenons par exemple n=5141=53·97 et e=7, premier avec 52·96=4992). Il transforme en nombres son message en remplaçant par exemple chaque lettre par son rang dans l'alphabet.
"JEVOUSAIME" devient : "10 05 22 15 21 19 01 09 13 05".
Puis il découpe son message chiffré en blocs de même longueur représentant chacun un nombre plus petit que n. Cette opération est essentielle, car si on ne faisait pas des blocs assez longs (par exemple si on laissait des blocs de 2 dans notre exemple), on retomberait sur un simple chiffre de substitution que l'on pourrait attaquer par l'analyse des fréquences.
Son message devient : "010 052 215 211 901 091 305"
Un bloc B est chiffré par la formule C = Be mod n, où C est un bloc du message chiffré que Bob enverra à Alice.
Après avoir chiffré chaque bloc, le message chiffré s'écrit : "0755 1324 2823 3550 3763 2237 2052".
3. Déchiffrement
Alice calcule à partir de p et q, qu'elle a gardés secrets, la clef d de déchiffrage (c'est sa clef privée). Celle-ci doit satisfaire l'équation e·d mod ((p-1)(q-1)) = 1. Ici, d=4279.
Chacun des blocs C du message chiffré sera déchiffré par la formule B = Cd mod n.
Elle retrouve : "010 052 215 211 901 091 305"
L'instruction d=PowerMod[e,-1,(p-1)(q-1)] de Mathematica permet de calculer d facilement.
En regroupant les chiffres deux par deux et en remplaçant les nombres ainsi obtenus par les lettres correspondantes, elle sait enfin que Bob l'aime secrètement, sans que personne d'autre ne puisse le savoir.
merci d'avance
---------------