Poster un nouveau sujet Poster une réponse
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   Citer 

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)

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 878
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Sam 14 Jan 2012, 9:24   Citer 

En quoi consiste ce système de codage affine ?

Ou on le connait sous un autre nom ? winkle.gif

----------------------
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 ...
 Adresse email Haut de page Bas de page 
 
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   Citer 

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. cupsmiley.gif 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
 Adresse email Haut de page Bas de page 
 
romain72



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
Posté le : Sam 14 Jan 2012, 21:25   Citer 

Oui modulo 26 c'est cela

 Adresse email Haut de page Bas de page 
 
romain72



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
Posté le : Sam 14 Jan 2012, 21:26   Citer 

C'est normale je fais l'option mps et j'ai étudié l'introduction aux modulos

 Adresse email Haut de page Bas de page 
 
romain72



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
Posté le : Sam 14 Jan 2012, 21:47   Citer 

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

 Adresse email Haut de page Bas de page 
 
romain72



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
Posté le : Sam 14 Jan 2012, 21:48   Citer 

le disp z et end vont avec mon programme tongue.gif

 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Dim 15 Jan 2012, 2:25   Citer 

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

 Adresse email Haut de page Bas de page 
 
romain72



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
Posté le : Dim 15 Jan 2012, 9:49   Citer 

ok merci pour l'astuce

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 15 Jan 2012, 14:49   Citer 

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
 Adresse email Haut de page Bas de page 
 
romain72



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 14 Jan 2012, 8:41
Posté le : Dim 15 Jan 2012, 21:22   Citer 

je suis désolé je comprends mal car j'ai juste étudier l'introduction au chapitre.

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 878
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Dim 15 Jan 2012, 22:19   Citer 

En général les chaînes c'est un drôle de bord... bazar tongue.gif
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 notgood.gif

----------------------
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 ...
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 16 Jan 2012, 0:07   Citer 

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é. minied.gif

--

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
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink