Cryptage RSA

Le problème exposé dans ce sujet a été résolu.

Bonsoir, cela fait maintenant quelques temps que j'ai réalisé un programme en java permettant de crypter des messages à l'aide de l'algorithme RSA. Seulement il me reste à régler une faille. J'ai trouvé un tutoriel ( https://zestedesavoir.com/tutoriels/723/la-cryptographie-asymetrique-avec-rsa/un-algorithme-ne-sutilise-pas-nimporte-comment/ ) vraiment bien fait sur ce site qui explique notamment comment contrer cette faille.

La méthode pour combler la faille : Elle consiste à crypter non pas un caractère à la fois (1 octet) mais un ensemble de caractères à la fois (plusieurs octets) en fonction de la taille de la clé N. Si N est codé sur 45 octets par exemple alors on peut crypté notre message par bloc de 45 octets à la fois (donc 45 caractères à la fois car chaque caractère est codé sur 1 octets max (unicode)).

Dans l'exemple du tutoriel, ils souhaitent crypté le mot "Papa". Ce qui donne en unicode : 80 97 112 97. La faille serait alors de crypté chaque nombre un à un avec RSA. => (pas bon). En utilisant une clé N codée sur au minimum 4 octets, on peut alors interpréter le message comme étant le nombre stocké sur 4 octets : $80 (2^8)^3+97 (2^8)^2+112 (2^8)^1+97 (2^8)^0$ qui est alors égal à 1348563041. Il nous reste alors à crypter 1348563041 à l'aide de RSA. Supposons que l'on aie en ayant crypté à l'aide de la clé public : 4515785634856517855241751274514

Le destinataire possédant la clé privée va alors décrypter le 4515785634856517855241751274514 en 1348563041. Ma question : comment le destinataire va alors à partir de 1348563041 retrouver les 4 caractères formant le bloc de 4 octets. Donc comment va t-il retrouver 80 97 112 97 ? (et donc ensuite Papa)

Merci de votre aide !

En procédant à l’envers par rapport à ce que tu as fait pour transformer 80 97 112 97 en 1348563041. Plus précisément, voici les étapes.

  1. Procéder à la division euclidienne de 1348563041 par 28 : le quotient est 5267824, et le reste 97. Tu as le dernier nombre de la série !
  2. Procéder à la division euclidienne du quotient (5267824) par 28 : le quotient est 20577, et le reste 112. Tu as l’avant-dernier nombre de la série.
  3. Recommencer de la même manière, avec à chaque fois le nouveau quotient.
  4. Quand le quotient vaut 0, c’est fini. :)
+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte