Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Programmation » [C] Programme calculant l'inverse modulo n d'un nombre » 02-03-2009 22:55:56
- shengao
- Réponses : 2
Bonjour,
Voici un petit programme mettant en pratique ce que j'ai appris en crypto et arithmétique ces 5 derniers jours (pouvant donc comporter quelques faiblesses sur certaines méthodes)
Encore merci a yoshi.
#include <stdlib.h>
/* -----------------------------INVERSE MODULAIRE -----------------
Créé le 2 Mars 2009
par Shengao
script permettant le calcule de l'inverse modulaire d'un nombre
--------------------------------------------------------------------
composition:
fonction modulaire: saisie du nombre et de son modulo, appel de fonction plusgrandiv(pgcd) si pgcd=1 appel de
calculinverse, affiche l'inverse du nombre et donne k.
fonction plusgrandiv: calcul du pgcd du nombre et de son modulo
(pour calculer l'inverse de a mod m il faut que a soit premier avec m)
fonction calculinverse: calcule l'inverse du nombre
*/
int plusgrandiv(int nombre1, int nombre2,int *pgcd)
{
int reste;
do
{
reste = nombre1%nombre2;
nombre1=nombre2;//décalage pour réaliser euclide
nombre2 = reste;//décalage pour réaliser euclide
} while (nombre2 != 0);//tant que le reste est non nul
*pgcd=nombre1;//puisque nombre1 est désormais le pgcd
}
void calculinverse(int nombre, int modulo)
{
int a; //1+ modulo*k
int k; // k désigne le nombre de fois que le modulo doit être multiplier
int m; // reste après le modulo
int b; //b est l'inverse modulaire du nombre
k=-9999999;//n'a pas encore bien réfléchi sur la faleur la plus approprier à affecter a k
do
{
k++;
a=1+modulo*k;
m= a % nombre;
}while (m != 0);
b = a/nombre;
printf("\nl'inverse de %d par modulo %d est %d avec k= %d\n",nombre,modulo,b,k);
}
int modulaire(void)
{
int a,k,m,b,modulo,nombre,pgcd;
printf("entrer le chiffre dont on cherche l'inverse\n");
scanf("%d",&nombre);
scanf("%*c");
printf("entrer modulo\n");
scanf("%d",&modulo);
scanf("%*c");
plusgrandiv(nombre,modulo,&pgcd);
printf("%d",pgcd);
if(pgcd==2)
calculinverse(nombre,modulo);
else
printf("attention %d, n'est pas premier avec %d, l'inverse de %d n'as pas de solution dans modulo %d",nombre,modulo,nombre,modulo);
}
int main()
{
modulaire();
return 0;
}
#2 Entraide (supérieur) » congru 0 mod Beaucoups et inverse modulaire [Résolu] » 02-03-2009 20:03:48
- shengao
- Réponses : 1
Bonjour,
j'aimerai savoir deux choses
1.
j'aimerai savoir si il y a plusieurs méthode pour trouver l'inverse d'un chiffre en modulo?
prenons un exemple.
trouver l'inverse b de 1572 en modulo 5441 (la reponse est 1561)
Je connais la façon en faisant la descente et la remonté d'Euclide avec
b=1572[5441]
d'où
1572b congru 5441k+1
1572b -5441k congru 1 [5441]
5441=1572*3+725 (debut de la descente d'euclide)
...etc..
mais j'aimerais savoir si il y a d'autre méthode?
2.deuxième question en rapport avec l'exemple d'en haut (b est l'inverse de 1572 [5441]
si l'on a b=1572[5441]<===> 1572b=1 [5441]
on peux donc estimer "simplement" que
1+5441k=0 [1472]
(chaque égale ici représenter en vérité "congru")
donc je voudrais savoir comment on peux trouver k sans outil informatique?
a+
#3 Re : Cryptographie » chiffrement affine » 28-02-2009 21:04:57
franchement je suis épaté avec ta logique modulaire. Je comprend facilement, mais trouver les solutions c'est une autre histoire:/.
j'ai une bonne nouvelle j'ai fini tous les exercices de chiffrement affine donc je t'embêterais plus avec sa.
Une unique dernière question un peu hors sujet au topic... dans le cas d'un chiffrement par substitution simple, pourquoi on peut dire que ce chiffrement est a clé secrète? pour un chiffrement affine oui je comprend que c'est a clé secrète mais par substitution là je vois pas...
#4 Re : Cryptographie » chiffrement affine » 28-02-2009 14:44:39
C'est bon j'ai enfin fini cet exercice, je trouve en clée de déchiffrement (5,-5) clé vérifier puisque j'ai traduit un message codé.
Cependant l'avant dernière question est
trouver toutes les solution mod 26 de l'équation 6a=14.
je trouve bizarre qu'il me demande ça.. qu'est ce qu'il veule me faire comprendre? Je vois pas le lien entre l'exercice et la question..
la dernier question est:
tous les couples de lettre décryptées tels que K-->D et N -->O peuvent -ils convenir pour décrypter un cryptogramme affine?
(j'ai repondu qu'il faut que dans ax+b a doit être premier avec 26 et b doit être <= 25
#5 Re : Cryptographie » chiffrement affine » 28-02-2009 12:58:56
oui dsl pour le K,
là je cherche pour le déchiffrement, je suis sur une bonne vois, je sais que l'inverse de a (ici 21) est 5,
je fais un pause et je reprend l'exercice en m'instruisant sur comment trouver b.
bonne après midi
#6 Re : Cryptographie » chiffrement affine » 28-02-2009 12:01:26
(:mega boulet:)
b = 14 - 13 * 21 = - 259
on cherche k pour que
b = -259+26k et 0 <= b <= 25
soit k = 10 et b = -259 + 26 * 10 = 1.
clé (21,1)
est ce que j'ai compris?
bon maintenant j'attaque la clé de déchiffrement, je sent que je vais là aussi m'amuser. :P
#7 Re : Cryptographie » chiffrement affine » 28-02-2009 11:57:18
Bon alors on a commit un erreur dès le début...
Le systeme est dans l'énoncé
f(k)=D
f(N)=O
et on a fait f(10) = 13 et f(13)=14 or D =3 donc j'ai refait avec le bon système
f(10)=3
f(13)=14
donc
(13a + b)-(10a+b) = 14-3
on obtient
3a = 11 [26]
on cherche k pour que
1+26k = 0 [3]
soit k = 2 --> 11 + 26 * 2 = 63
3a = 63 et a = 21
Et là je me rend compte que je ne comprend pas la logique pour le b... (:suicide:) :'(
#8 Re : Cryptographie » chiffrement affine » 28-02-2009 11:01:06
d'accord merci,
dsl si je parai inculte mais je n'ai pas encore de solide base en arithmétique et en crypto.
Mais je fais tous pour comblé c'est lacune.
A+
#9 Re : Cryptographie » chiffrement affine » 27-02-2009 21:20:21
enfin je me doute que c'est lier au 3a=1 mais bon j'ai du mal à comprendre
#10 Re : Cryptographie » chiffrement affine » 27-02-2009 21:17:45
ok ,
le calcul en lui même je comprend, bon là sa me gène j'ai l'impression d'être gros boulet mais... pourquoi il faut que 1+26k soi un multiple de 3?
#11 Re : Cryptographie » chiffrement affine » 27-02-2009 21:04:26
Ok merci c'est bien ce que je pensai alors XD
J'apprécie de plus en plus la crypto.
merci pour tous.
#12 Re : Cryptographie » chiffrement affine » 27-02-2009 20:57:06
salut
j'ai deux question sur ce que tu as écrit
comment tu trouves -1 dans
(13a + b)-(10a+b) = 14-13
j'obtiens
3a = -1 [26]
?
et pourquoi à tu mit un mod 3 dans
1+26k = 0 [3]
??
après je comprend la logique c'est comme en cours.
merci d'avoir bien prit le temps de détaillé, je pense avoir prochainement d'autre exercice qui me poseront problème je ferai un nouveau topic dans ce cas la.
a+
#13 Re : Cryptographie » chiffrement affine » 26-02-2009 20:14:28
merci beaucoup je viens de comprendre tous ce que tu m'as dit, je pense que tu m'as beaucoup appris,
très sympa ce forum.
Merci :)
#14 Re : Cryptographie » chiffrement affine » 26-02-2009 19:53:22
hooooooooo
ee donc en faite pour a par exemple c'est le rang 0 ??
oulaa d'accord merci de m'avoir éclairci :)
a+
bonne soirée
#15 Re : Cryptographie » chiffrement affine » 26-02-2009 18:34:51
D'accord merci de te pencher sur mon problème :)
oui j'avais oublier de cité le modulo 26.
et justement je trouve le système assez complexe :/ sachant quand plus on doit trouver a et b entier.
Moi je reste avec mes livres emprunté a la bibliothèque en essayant de trouver une éventuel astuce.
merci encore :)
#16 Cryptographie » chiffrement affine » 26-02-2009 16:58:51
- shengao
- Réponses : 22
Bonjour,
voila je débute dans la crypto et j'ai des difficultés.
Dans un chiffrement affine f(x)= ax+b
On sais que K et chiffrée par D, et N est chiffrée par O.
On me demande:
1) quelles informations sur a et b peut on en déduire:
(moi je me dit que K étant la 17 ème lettrre de l'alphabet, D la 4ème, N la 14ème, et O la 15 ème
f(17)=a17+b=4
f(14)=a14+b=15
)
2.calculer la clé de chiffrement utilisée.
(faut il faire un système?dans ce cas je n'y arrive pas :/ )
3.en déduire la clé de déchiffrement
4.trouver toutes les solutions mod 26 a l'équation 6a=14
merci de bien vouloir m'aider et m'éclairer
:)
Pages : 1







