Programme décodage message affine |
Auteur |
Message |
romain72
Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
|
Posté le : Sam 14 Jan 2012, 8:50
|
|
|
J'essayerais ce week-end de vous présenter mon premier programme cela fait une semaine tout juste que je programme je suis en seconde.
Il portera sur le décodage de message crypté par le système affine (ax+b)
|
|
|
|
The K
Autorisation : Membre
Nb de messages : 878
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Sam 14 Jan 2012, 9:24
|
|
|
En quoi consiste ce système de codage affine ?
Ou on le connait sous un autre nom ?
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Un problème de programmation ? Allez consulter ce tutoriel crée pour cela : TUTORIEL PROGRAMMATION
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 14 Jan 2012, 12:33
|
|
|
y=ax+b, pourquoi pas mais cela me paraît trop simple car x=(y-b)/a
J'attends impatiemment la suite.
S'agit-il plutôt du cryptage y=modulo(ax+b,c) ?
Cela me rappelle des souvenir. Sauf que je n'y ai touché qu'en terminale.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
romain72
Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
|
Posté le : Sam 14 Jan 2012, 21:25
|
|
|
Oui modulo 26 c'est cela
|
|
|
|
romain72
Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
|
Posté le : Sam 14 Jan 2012, 21:26
|
|
|
C'est normale je fais l'option mps et j'ai étudié l'introduction aux modulos
|
|
|
|
romain72
Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
|
Posté le : Sam 14 Jan 2012, 21:47
|
|
|
Voici la programmation:
Code |
Input "CLE DE DECODAGE A'=",A
Input "CLE DE CODAGE B=",B
Input "LETTRE CRYPTEE=",X
26*partdéc(((X-B)*A)/26)[sto]Z
If Z=0
Then
Disp "A"
End
If Z=1
Then
Disp "B"
End
If Z=2
Then
Disp "C"
End
If Z=3
Then
Disp "D"
End
If Z=4
Then
Disp "E"
End
If Z=5
Then
Disp "F"
End
If Z=6
Then
Disp "G"
End
If Z=7
Then
Disp "H"
End
If Z=8
Then
Disp "I"
End
If Z=9
Then
Disp "J"
End
If Z=10
Then
Disp "K"
End
If Z=11
Then
Disp "L"
End
If Z=12
Then
Disp "M"
End
If Z=13
Then
Disp "N"
End
If Z=14
Then
Disp "O"
End
If Z=15
Then
Disp "P"
End
If Z=16
Then
Disp "Q"
End
If Z=17
Then
Disp "R"
End
If Z=18
Then
Disp "S"
End
If Z=19
Then
Disp "T"
End
If Z=20
Then
Disp "U"
End
If Z=21
Then
Disp "V"
End
If Z=22
Then
Disp "W"
End
If Z=23
Then
Disp "X"
End
If Z=24
Then
Disp "Y"
End
If Z=25
Then
Disp "Z"
End
|
Voilà mon premier programme fait tout seul aider moi à le simplifier ou à l'améliorer si possible
(ps~~soyer indulgent j'ai commencé la programmation il y a une semaine et demi) merci
|
|
|
|
romain72
Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
|
Posté le : Sam 14 Jan 2012, 21:48
|
|
|
le disp z et end vont avec mon programme
|
|
|
|
Sangohan38
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Dim 15 Jan 2012, 2:25
|
|
|
Quand il n'y a qu'une seule instruction qui suit la condition du If, le then/else est optionnel donc tu peux tous les enlevés.
Sangohan38
|
|
|
|
romain72
Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
|
Posté le : Dim 15 Jan 2012, 9:49
|
|
|
ok merci pour l'astuce
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Dim 15 Jan 2012, 14:49
|
|
|
La prochaine étape d'optimisation sera d'utiliser les chaînes plutôt que cette myriade de If.
A la limite des listes mais les chaînes sont bien meilleures.
Des explications sur les chaînes se trouvent dans cet article
Code | Input "CLEFA=",A
Input "CLEFB=",B
Input "LETTRE=",Str1 // il faudra saisir une lettre et non un chiffre
B+A*inString("ABCDEFGHIJKLMNOPQRSTUVWXYZ",Str1)
Ans-26int(Ans/26
sub("ABCDEFGHIJKLMNOPQRSTUVXYZ",Ans,1 |
Ans=Rép
inString=carChaîne
sub=sous-chaîne
Str1=Chaîne1
Plus tard on pourra utiliser des boucles pour convertir un texte entier.
Par contre je ne comprends pas pourquoi tu appelles A "clef de decryptage"
Pour moi A et B sont tous deux clefs de cryptage.
"==" me sert à écrire "congru"
ax+b == r
(ax+b)d == dr
adx+bd == dr
adx == dr-bd
Si ad == 1 Alors d(r-b) == x
Cette dernière condition n'est d'ailleurs pas toujours possible (a ne doit pas être multiple de 26)
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
romain72
Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
|
Posté le : Dim 15 Jan 2012, 21:22
|
|
|
je suis désolé je comprends mal car j'ai juste étudier l'introduction au chapitre.
|
|
|
|
The K
Autorisation : Membre
Nb de messages : 878
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Dim 15 Jan 2012, 22:19
|
|
|
En général les chaînes c'est un drôle de bord... bazar
Ne t'en fais pas si tu ne comprends pas tout, c'est normal ^^
Linka il ne manque pas un Disp a la fin de ton code ?
J'ai essayé l'affichage avec cette méthode sans succès
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Un problème de programmation ? Allez consulter ce tutoriel crée pour cela : TUTORIEL PROGRAMMATION
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Lun 16 Jan 2012, 0:07
|
|
|
The K :
Le dernier calcul d'un programme est normalement toujours affiché.
Il faut être en écran normal et que ce soit bien le dernier calcul.
Dans ces ces condition ni Disp ni Pause ne devrait être nécessaire
====
romain 72 :
Si tu ne comprends pas les chaînes, j'ai donné un lien pour aider. (mais je peux toujours ajoûter des informations)
Mais j'ai été bête de ne pas remarquer que ce post se trouve dans la section TI82 et que par conséquent ta calculatrice ne doit pas avoir de chaînes...
Si tu ne comprends pas l'aspect mathématique, ce n'est ni grâve ni étonnant. (juste dommage)
--
En gros je stocke une lettre dans Str1.
Puis je recherche cette lettre dans une autre chaîne ("AB...Z") avec inString ce qui me donne un nombre associé à la lettre.
Puis j'effectue A*X+B sur la même ligne.
sub me sert enfin à extraire une lettre à la position donnée par le nombre. Cela me génère une lettre associée au nombre.
Pour avoir un peu de lisibilité j'ai écrit quelques lignes de calculs, et j'ai utilisé Ans (Rép) pour exploiter le résultat des lignes précédentes (c'est plus léger).
--
Citer : linkakro | Par contre je ne comprends pas pourquoi tu appelles A "clef de decryptage"
Pour moi A et B sont tous deux clefs de cryptage. |
Je me suis embrouillé tout seul à cause du coefficient A. D'habitude j'appelle A le coefficient de cryptage, B la constante (de cryptage) et D le coefficient de décryptage, qui dépend directement de A.
Et toi tu as appelé A' le coefficient de décryptage.
Mes équations juste en dessous sont un usage des modulos qui montre la démonstration du décryptage, en supposant D déjà connu.
Cela me servait à mettre les choses au clair pour les trois variables et aussi à me rappeler des opérations. Cela montrait aussi ce qui définit la clef de décryptage.
En fait c'était innutile puisque tu effectuais déjà une opération de décryptage. Désolé.
--
De quoi effectuer le cryptage et le décryptage :
Code | " "->Str2
Input "CLEF A=",A
Input "CLEF B=",B
Input "TEXTE=",Str1
For(W,1,length(Str1
sub(Str1,W,1
inString("ABCDEFGHIJKLMNOPQRSTUVWXYZ",Ans
A*Ans+B
Ans-26int(Ans/26
Str2+sub("ABCDEFGHIJKLMNOPQRSTUVXYZ",Ans,1)->Str2
End
Disp Str2 |
Code | " "->Str2
Input "CLEF D=",D
Input "CLEF B=",B
Input "TEXTE=",Str1
For(W,1,length(Str1
sub(Str1,W,1
inString("ABCDEFGHIJKLMNOPQRSTUVWXYZ",Ans
D*(Ans-B
Ans-26int(Ans/26
Str2+sub("ABCDEFGHIJKLMNOPQRSTUVXYZ",Ans,1)->Str2
End
Disp Str2 |
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|