Dans mon esprit la crypto RSA c'est
1/ codage
2/ chiffrement
3/ dechiffreemnt
4/ decodage
Un codage peut être 'A'=65, 'B'=66 ect. C'est le codage ASCII. C'est int
eressant parce que cela permet de mettre en place rapideemnt un chiffrag
e RSA. Par example: p=167, q= 23, -> modulo= 3841 et on oublie p et q.
on choisit une clé public 197 par exmaple et une clef privé xxx. Le chif
frement se fait bien on eleve a la puissance avec la cleé public, pas de
detail.
Pour faire le chemin inverse - c'est a dire dechiffrer - c'est la clé pr
ivé qui est utilisé. MAIS supposont avec un modulo = 3841 on obtiene 200
1 ou 3002 ou autre chose entre [255, 3841] que se passe t-il ? Comment d
ecoder ce que l'on a dechifffrer avec un résultat compris dans l'interva
l [255, 3841]
Je precise que evidemeent pour l'intervale [0,255] il n'y a pas de probl
em.
Merci de m'aider et de m'expliquer ce que je n'ai pas coprids dans l'alg
orithme. En fait tout ce passe bien si la longeur de l'alphabet (255 en
ascii) est egal au module.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Article poste via Voila News - http://www.news.voila.fr
Le : Sat Apr 23 00:51:59 2005 depuis l'IP : 84.97.35.38 [VIP 772559954197]
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Sylvain
Bonjour,
Dans mon esprit la crypto RSA c'est 1/ codage 2/ chiffrement 3/ dechiffreemnt 4/ decodage
Un codage peut être 'A'e, 'B'f ect. C'est le codage ASCII. C'est int eressant parce que cela permet de mettre en place rapideemnt un chiffrag e RSA.
ce que vous appellez codage ou decodage n'est (au mieux) qu'une vue de l'esprit et strictement <rien>.
le fait d'exprimer un nombre en base 10 ou 16 ou selon sa correspondance ASCII ne change rien au nombre et ne traduit aucune opération, donc 'A' = 65 = 41h.
Par example: p7, q= 23, -> modulo= 3841 et on oublie p et q.
ah bon ?! on "oublie", on en aurait vraiment fini avec eux ?...
on choisit une clé public 197 par exmaple et une clef privé xxx.
pas vraiment, on ne choisit pas e (l'exposant public et non pas "la clé publique) et d (l'exposant privé et non "la clé privée") aussi légèrement !
la clé publique, formée du couple {e, n} est choisie telle que e soit petit (c'est arbitraire mais habituel) et surtout tel qu'il existe un inverse à e modulo ((p-1) * (q-1)) noté d (donc on en avait pas vraiment fini avec p et q).
si aucun inverse (entier!) n'existe, on recommence avec un autre e (ou on regénère un autre p et q).
ici avec e = 197, la seule valeur possible de d est 241, et donc la seule clé privée valide est le couple {241, 3841}
Le chiffrement se fait bien on eleve a la puissance avec la cleé public, pas de detail.
Pour faire le chemin inverse - c'est a dire dechiffrer - c'est la clé pr ivé qui est utilisé(e). MAIS supposont(s) (qu') avec un modulo(e) = 3841 on obtien(n)e 2001 ou 3002 ou autre chose entre [255, 3841] que se passe t-il ?
les valeurs résultant de l'exponentiation modulaire par {e,n} ne sont pas arbitraires et toutes sont ""inversables"" par {d,n}; avec vos valeurs on a:
'A'^241%3841 = 1719 et 1719^197%3841 = 'A' 'B'^241%3841 = 3557 et 3557^197%3841 = 'B' 'C'^241%3841 = 2702 et 2702^197%3841 = 'C' 'D'^241%3841 = 3219 et 3219^197%3841 = 'D' 'E'^241%3841 = 1472 et 1472^197%3841 = 'E' 'F'^241%3841 = 139 et 139^197%3841 = 'F' 'G'^241%3841 = 472 et 472^197%3841 = 'G' 'H'^241%3841 = 376 et 376^197%3841 = 'H' 'I'^241%3841 = 3019 et 3019^197%3841 = 'I' 'J'^241%3841 = 3533 et 3533^197%3841 = 'J' 'K'^241%3841 = 924 et 924^197%3841 = 'K' 'L'^241%3841 = 263 et 263^197%3841 = 'L' 'M'^241%3841 = 1751 et 1751^197%3841 = 'M' 'N'^241%3841 = 2755 et 2755^197%3841 = 'N' 'O'^241%3841 = 1548 et 1548^197%3841 = 'O' 'P'^241%3841 = 665 et 665^197%3841 = 'P' 'Q'^241%3841 = 1635 et 1635^197%3841 = 'Q' 'R'^241%3841 = 2546 et 2546^197%3841 = 'R' 'S'^241%3841 = 787 et 787^197%3841 = 'S' 'T'^241%3841 = 549 et 549^197%3841 = 'T' 'U'^241%3841 = 1462 et 1462^197%3841 = 'U' 'V'^241%3841 = 870 et 870^197%3841 = 'V' 'W'^241%3841 = 170 et 170^197%3841 = 'W' 'X'^241%3841 = 2961 et 2961^197%3841 = 'X' 'Y'^241%3841 = 84 et 84^197%3841 = 'Y' 'Z'^241%3841 = 3760 et 3760^197%3841 = 'Z'
Comment decoder ce que l'on a dechifffrer avec un résultat compris dans l'intervalle [255, 3841]
je ne vois pas où serait le problème, pour rappel votre "décodage" est un non-traitement, s'il vous semble qu'un traitement doit être réalisé c'est que vous avez commis une erreur ailleurs.
Je precise que evidemeent pour l'intervale [0,255] il n'y a pas de proble(è)m(e)
ah bon ? votre CPU ne sait traiter que des entiers sur 8 bits ? vous allez avoir qlq difficultés à faire des calculs RSA alors.
Sylvain.
Bonjour,
Dans mon esprit la crypto RSA c'est
1/ codage
2/ chiffrement
3/ dechiffreemnt
4/ decodage
Un codage peut être 'A'e, 'B'f ect. C'est le codage ASCII. C'est int
eressant parce que cela permet de mettre en place rapideemnt un chiffrag
e RSA.
ce que vous appellez codage ou decodage n'est (au mieux) qu'une vue de
l'esprit et strictement <rien>.
le fait d'exprimer un nombre en base 10 ou 16 ou selon sa correspondance
ASCII ne change rien au nombre et ne traduit aucune opération, donc 'A'
= 65 = 41h.
Par example: p7, q= 23, -> modulo= 3841 et on oublie p et q.
ah bon ?! on "oublie", on en aurait vraiment fini avec eux ?...
on choisit une clé public 197 par exmaple et une clef privé xxx.
pas vraiment, on ne choisit pas e (l'exposant public et non pas "la clé
publique) et d (l'exposant privé et non "la clé privée") aussi légèrement !
la clé publique, formée du couple {e, n} est choisie telle que e soit
petit (c'est arbitraire mais habituel) et surtout tel qu'il existe un
inverse à e modulo ((p-1) * (q-1)) noté d (donc on en avait pas vraiment
fini avec p et q).
si aucun inverse (entier!) n'existe, on recommence avec un autre e (ou
on regénère un autre p et q).
ici avec e = 197, la seule valeur possible de d est 241, et donc la
seule clé privée valide est le couple {241, 3841}
Le chiffrement se fait bien on eleve a la puissance avec la cleé
public, pas de detail.
Pour faire le chemin inverse - c'est a dire dechiffrer - c'est la clé pr
ivé qui est utilisé(e). MAIS supposont(s) (qu') avec un modulo(e) = 3841
on obtien(n)e 2001 ou 3002 ou autre chose entre [255, 3841]
que se passe t-il ?
les valeurs résultant de l'exponentiation modulaire par {e,n} ne sont
pas arbitraires et toutes sont ""inversables"" par {d,n}; avec vos
valeurs on a:
'A'^241%3841 = 1719 et 1719^197%3841 = 'A'
'B'^241%3841 = 3557 et 3557^197%3841 = 'B'
'C'^241%3841 = 2702 et 2702^197%3841 = 'C'
'D'^241%3841 = 3219 et 3219^197%3841 = 'D'
'E'^241%3841 = 1472 et 1472^197%3841 = 'E'
'F'^241%3841 = 139 et 139^197%3841 = 'F'
'G'^241%3841 = 472 et 472^197%3841 = 'G'
'H'^241%3841 = 376 et 376^197%3841 = 'H'
'I'^241%3841 = 3019 et 3019^197%3841 = 'I'
'J'^241%3841 = 3533 et 3533^197%3841 = 'J'
'K'^241%3841 = 924 et 924^197%3841 = 'K'
'L'^241%3841 = 263 et 263^197%3841 = 'L'
'M'^241%3841 = 1751 et 1751^197%3841 = 'M'
'N'^241%3841 = 2755 et 2755^197%3841 = 'N'
'O'^241%3841 = 1548 et 1548^197%3841 = 'O'
'P'^241%3841 = 665 et 665^197%3841 = 'P'
'Q'^241%3841 = 1635 et 1635^197%3841 = 'Q'
'R'^241%3841 = 2546 et 2546^197%3841 = 'R'
'S'^241%3841 = 787 et 787^197%3841 = 'S'
'T'^241%3841 = 549 et 549^197%3841 = 'T'
'U'^241%3841 = 1462 et 1462^197%3841 = 'U'
'V'^241%3841 = 870 et 870^197%3841 = 'V'
'W'^241%3841 = 170 et 170^197%3841 = 'W'
'X'^241%3841 = 2961 et 2961^197%3841 = 'X'
'Y'^241%3841 = 84 et 84^197%3841 = 'Y'
'Z'^241%3841 = 3760 et 3760^197%3841 = 'Z'
Comment decoder ce que l'on a dechifffrer avec un résultat
compris dans l'intervalle [255, 3841]
je ne vois pas où serait le problème, pour rappel votre "décodage" est
un non-traitement, s'il vous semble qu'un traitement doit être réalisé
c'est que vous avez commis une erreur ailleurs.
Je precise que evidemeent pour l'intervale [0,255]
il n'y a pas de proble(è)m(e)
ah bon ? votre CPU ne sait traiter que des entiers sur 8 bits ?
vous allez avoir qlq difficultés à faire des calculs RSA alors.
Dans mon esprit la crypto RSA c'est 1/ codage 2/ chiffrement 3/ dechiffreemnt 4/ decodage
Un codage peut être 'A'e, 'B'f ect. C'est le codage ASCII. C'est int eressant parce que cela permet de mettre en place rapideemnt un chiffrag e RSA.
ce que vous appellez codage ou decodage n'est (au mieux) qu'une vue de l'esprit et strictement <rien>.
le fait d'exprimer un nombre en base 10 ou 16 ou selon sa correspondance ASCII ne change rien au nombre et ne traduit aucune opération, donc 'A' = 65 = 41h.
Par example: p7, q= 23, -> modulo= 3841 et on oublie p et q.
ah bon ?! on "oublie", on en aurait vraiment fini avec eux ?...
on choisit une clé public 197 par exmaple et une clef privé xxx.
pas vraiment, on ne choisit pas e (l'exposant public et non pas "la clé publique) et d (l'exposant privé et non "la clé privée") aussi légèrement !
la clé publique, formée du couple {e, n} est choisie telle que e soit petit (c'est arbitraire mais habituel) et surtout tel qu'il existe un inverse à e modulo ((p-1) * (q-1)) noté d (donc on en avait pas vraiment fini avec p et q).
si aucun inverse (entier!) n'existe, on recommence avec un autre e (ou on regénère un autre p et q).
ici avec e = 197, la seule valeur possible de d est 241, et donc la seule clé privée valide est le couple {241, 3841}
Le chiffrement se fait bien on eleve a la puissance avec la cleé public, pas de detail.
Pour faire le chemin inverse - c'est a dire dechiffrer - c'est la clé pr ivé qui est utilisé(e). MAIS supposont(s) (qu') avec un modulo(e) = 3841 on obtien(n)e 2001 ou 3002 ou autre chose entre [255, 3841] que se passe t-il ?
les valeurs résultant de l'exponentiation modulaire par {e,n} ne sont pas arbitraires et toutes sont ""inversables"" par {d,n}; avec vos valeurs on a:
'A'^241%3841 = 1719 et 1719^197%3841 = 'A' 'B'^241%3841 = 3557 et 3557^197%3841 = 'B' 'C'^241%3841 = 2702 et 2702^197%3841 = 'C' 'D'^241%3841 = 3219 et 3219^197%3841 = 'D' 'E'^241%3841 = 1472 et 1472^197%3841 = 'E' 'F'^241%3841 = 139 et 139^197%3841 = 'F' 'G'^241%3841 = 472 et 472^197%3841 = 'G' 'H'^241%3841 = 376 et 376^197%3841 = 'H' 'I'^241%3841 = 3019 et 3019^197%3841 = 'I' 'J'^241%3841 = 3533 et 3533^197%3841 = 'J' 'K'^241%3841 = 924 et 924^197%3841 = 'K' 'L'^241%3841 = 263 et 263^197%3841 = 'L' 'M'^241%3841 = 1751 et 1751^197%3841 = 'M' 'N'^241%3841 = 2755 et 2755^197%3841 = 'N' 'O'^241%3841 = 1548 et 1548^197%3841 = 'O' 'P'^241%3841 = 665 et 665^197%3841 = 'P' 'Q'^241%3841 = 1635 et 1635^197%3841 = 'Q' 'R'^241%3841 = 2546 et 2546^197%3841 = 'R' 'S'^241%3841 = 787 et 787^197%3841 = 'S' 'T'^241%3841 = 549 et 549^197%3841 = 'T' 'U'^241%3841 = 1462 et 1462^197%3841 = 'U' 'V'^241%3841 = 870 et 870^197%3841 = 'V' 'W'^241%3841 = 170 et 170^197%3841 = 'W' 'X'^241%3841 = 2961 et 2961^197%3841 = 'X' 'Y'^241%3841 = 84 et 84^197%3841 = 'Y' 'Z'^241%3841 = 3760 et 3760^197%3841 = 'Z'
Comment decoder ce que l'on a dechifffrer avec un résultat compris dans l'intervalle [255, 3841]
je ne vois pas où serait le problème, pour rappel votre "décodage" est un non-traitement, s'il vous semble qu'un traitement doit être réalisé c'est que vous avez commis une erreur ailleurs.
Je precise que evidemeent pour l'intervale [0,255] il n'y a pas de proble(è)m(e)
ah bon ? votre CPU ne sait traiter que des entiers sur 8 bits ? vous allez avoir qlq difficultés à faire des calculs RSA alors.
Sylvain.
Sylvain
les valeurs résultant de l'exponentiation modulaire par {e,n} ne sont pas arbitraires et toutes sont ""inversables"" par {d,n}; avec vos valeurs on a:
'A'^241%3841 = 1719 et 1719^197%3841 = 'A'
évidemment, j'aurais du écrire
y = 'A'^197%3841 puis calculer y^241%3841; mais cela n'aurait rien changé.
votre erreur est surement de considérer l'espace des valeurs chiffrées de 'A'..'Z' comme uniformément réparti dans 0..m, c'est bien sur faux.
cette erreur résulte elle-même d'une mauvaise utilisation de la clé publique, vous ne devez pas chiffrer chaque lettre indépendemment mais plutôt chiffrer des nombres les plus grand possibles tout en restant plus petit que m.
il vous apparaitra alors que la force de RSA ne vient pas d'une distribution non prévisible des chiffrés mais de l'impossibilité d'intuiter d redonnant le clair (impossibilité de calculer p et q depuis m afin de pouvoir calculer d quant bien même e est parfaitement connu).
Sylvain.
les valeurs résultant de l'exponentiation modulaire par {e,n} ne sont
pas arbitraires et toutes sont ""inversables"" par {d,n}; avec vos
valeurs on a:
'A'^241%3841 = 1719 et 1719^197%3841 = 'A'
évidemment, j'aurais du écrire
y = 'A'^197%3841 puis calculer y^241%3841; mais cela n'aurait rien changé.
votre erreur est surement de considérer l'espace des valeurs chiffrées
de 'A'..'Z' comme uniformément réparti dans 0..m, c'est bien sur faux.
cette erreur résulte elle-même d'une mauvaise utilisation de la clé
publique, vous ne devez pas chiffrer chaque lettre indépendemment mais
plutôt chiffrer des nombres les plus grand possibles tout en restant
plus petit que m.
il vous apparaitra alors que la force de RSA ne vient pas d'une
distribution non prévisible des chiffrés mais de l'impossibilité
d'intuiter d redonnant le clair (impossibilité de calculer p et q depuis
m afin de pouvoir calculer d quant bien même e est parfaitement connu).
les valeurs résultant de l'exponentiation modulaire par {e,n} ne sont pas arbitraires et toutes sont ""inversables"" par {d,n}; avec vos valeurs on a:
'A'^241%3841 = 1719 et 1719^197%3841 = 'A'
évidemment, j'aurais du écrire
y = 'A'^197%3841 puis calculer y^241%3841; mais cela n'aurait rien changé.
votre erreur est surement de considérer l'espace des valeurs chiffrées de 'A'..'Z' comme uniformément réparti dans 0..m, c'est bien sur faux.
cette erreur résulte elle-même d'une mauvaise utilisation de la clé publique, vous ne devez pas chiffrer chaque lettre indépendemment mais plutôt chiffrer des nombres les plus grand possibles tout en restant plus petit que m.
il vous apparaitra alors que la force de RSA ne vient pas d'une distribution non prévisible des chiffrés mais de l'impossibilité d'intuiter d redonnant le clair (impossibilité de calculer p et q depuis m afin de pouvoir calculer d quant bien même e est parfaitement connu).
Sylvain.
Roland Le Franc
Effectivement, RSA chiffre seulement des textes de taille inférieure au modulo n. Quand on dit texte de taille inférieure à par exemple 256 bits, c'est donc, si on "code" les caractères alphanumériques en ASCII sur 8 bits comme vous dites, un message d'une longueur maximale de 8 caractères dont les codes binaires sont juxtaposés.
Cette contrainte fait qu'en pratique on utilise une cryptographie à 2 niveaux. Un long message est chiffré par un algorithme symétrique, puis un résumé (hash) de ce message est extrait, de taille faible, puis ce résumé est chiffré en RSA. On fabrique ce résumé d'une taille inférieure au modulo du RSA suivant, évidemment.
En fait tout ce passe bien si la longeur de l'alphabet (255 en
ascii) est egal au module.
Effectivement, RSA chiffre seulement des textes de taille inférieure au
modulo n.
Quand on dit texte de taille inférieure à par exemple 256 bits, c'est
donc, si on "code" les caractères alphanumériques en ASCII sur 8 bits
comme vous dites, un message d'une longueur maximale de 8 caractères
dont les codes binaires sont juxtaposés.
Cette contrainte fait qu'en pratique on utilise une cryptographie à 2
niveaux. Un long message est chiffré par un algorithme symétrique, puis
un résumé (hash) de ce message est extrait, de taille faible, puis ce
résumé est chiffré en RSA. On fabrique ce résumé d'une taille inférieure
au modulo du RSA suivant, évidemment.
En fait tout ce passe bien si la longeur de l'alphabet (255 en
Effectivement, RSA chiffre seulement des textes de taille inférieure au modulo n. Quand on dit texte de taille inférieure à par exemple 256 bits, c'est donc, si on "code" les caractères alphanumériques en ASCII sur 8 bits comme vous dites, un message d'une longueur maximale de 8 caractères dont les codes binaires sont juxtaposés.
Cette contrainte fait qu'en pratique on utilise une cryptographie à 2 niveaux. Un long message est chiffré par un algorithme symétrique, puis un résumé (hash) de ce message est extrait, de taille faible, puis ce résumé est chiffré en RSA. On fabrique ce résumé d'une taille inférieure au modulo du RSA suivant, évidemment.
En fait tout ce passe bien si la longeur de l'alphabet (255 en
ascii) est egal au module.
mm
Sylvain wrote:
ici avec e = 197, la seule valeur possible de d est 241, et donc la seule clé privée valide est le couple {241, 3841}
Et (2067,3841)? (Indice : 2067 = 241 + 1826 ;-)
mm
Sylvain wrote:
ici avec e = 197, la seule valeur possible de d est 241, et donc la
seule clé privée valide est le couple {241, 3841}