Poster un nouveau sujet Poster une réponse Page: 1,      >>
[Cryptage] Vigenere
Auteur Message
Krigglax



Autorisation : Membre
Nb de messages : 6
Inscrit le : Ven 23 Nov 2012, 23:54
Posté le : Sam 24 Nov 2012, 0:11   Citer 

Voila , je viens a vous aujourd’hui pour vous présenter un programme que j'ai entièrement réalisé,ce programme est un programme ( jusque là , ça va ) qui code et décode un message grâce a la méthode Vigenere ( ==> http://fr.wikipedia.org/wiki/Chiffre_de_Vigen%C3%A8re )

Donc je vous met a disposition le lien du téléchargement du .83p

http://www.mediafire.com/?cisv92ko04w3694

FONCTIONNEMENT DU PROGRAMME

Au menu , il y a deux possibilités , soit le codage , soit le décodage , pour crypter un message il suffit de le rentrer , puis entrer la clé de cryptage.
Après quelque secondes le résultat est sauvegardé dans la Chaine0 et est consultable.
Sur le même principe , pour le décodage , il suffit de rentrer le message crypté ainsi que la clé de cryptage utilisée pour coder le message.Le résultat du décryptage est , tout comme pour le codage , enregistré dans la Chaine0.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Je souhaiterait remercier une personne sans qui ce programme n'aurait pas été réalisé , il s'agit de charlesjean , un bon ami qui m'a appris il y a deux semaine les rudiments des chaines et en même temps m'a redonner goût à la programmation sur calculatrice.

----------------------
"Si Vis Pacem , Para Bellum"
Periclès
 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 : Sam 24 Nov 2012, 11:06   Citer 

Si tu postes le code sur le forum en plus du téléchargement ce sera plus attrayant.

Je me demande pourquoi tu as utilisé des If alors que tu sais te servir des fonctions inString et sub.
Je vais chercher comment l'optimiser et essayer d'expliquer chaque point.

EDIT : je ne sais pas pourquoi la page a bugué après mon post.

----------------------
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 
 
blg_flg



Autorisation : Membre
Nb de messages : 661
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Sam 24 Nov 2012, 11:34   Citer 

Je crois plutôt que c'est le post précédent qui a fait bugué la page. Si je me souviens bien, ça arrivait lorsque le membre utilisait un ordi portable. Si quelqu'un pouvait éditer son post en ajoutant des retours à la ligne, ça serait pas de refus. karate.gif

 Adresse email Haut de page Bas de page 
 
AlexRider38



Autorisation : Membre
Nb de messages : 139
Inscrit le : Ven 26 Mar 2010, 17:13
Posté le : Sam 24 Nov 2012, 11:51   Citer 

Si ça ne te dérange pas je poste le code.

Code
:Lbl 45
:0üF
:0üH
:0üA
:" "üStr0
:ClrHome
:Menu(">   VIGENERE   <","CODAGE",1,"DECODAGE",2,"INSTRUCTIONS",3,"CREDITS",4,"QUITTER",5
:Lbl 1
:Input "MESSAGE:",Str1
:Input "CLE:",Str2
:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"üStr3
:length(Str1)üY
:length(Str2)üZ
:While A[différent de]Y
:   0üC
:   H+1üH
:   If H>Z
:   Then
:      1üH
:   End
:   sub(Str2,H,1)üStr4
:   inString(Str3,Str4)üC
:   1+FüF
:   If F>Y
:      1üF
:   sub(Str1,F,1)üStr7
:   inString(Str3,Str7)üG
:   C+GüC
:   If C>26
:      C-26üC
:   If C=1
:      Str0+"A"üStr0
:   If C=2
:      Str0+"B"üStr0
:   If C=3
:      Str0+"C"üStr0
:   If C=4
:      Str0+"D"üStr0
:   If C=5
:      Str0+"E"üStr0
:   If C=6
:      Str0+"F"üStr0
:   If C=7
:      Str0+"G"üStr0
:   If C=8
:      Str0+"H"üStr0
:   If C=9
:      Str0+"I"üStr0
:   If C=10
:      Str0+"J"üStr0
:   If C=11
:      Str0+"K"üStr0
:   If C=12
:      Str0+"L"üStr0
:   If C=13
:      Str0+"M"üStr0
:   If C=14
:      Str0+"N"üStr0
:   If C=15
:      Str0+"O"üStr0
:   If C=16
:      Str0+"P"üStr0
:   If C=17
:      Str0+"Q"üStr0
:   If C=18
:      Str0+"R"üStr0
:   If C=19
:      Str0+"S"üStr0
:   If C=20
:      Str0+"T"üStr0
:   If C=21
:      Str0+"U"üStr0
:   If C=22
:      Str0+"V"üStr0
:   If C=23
:      Str0+"W"üStr0
:   If C=24
:      Str0+"X"üStr0
:   If C=25
:      Str0+"Y"üStr0
:   If C=26
:      Str0+"Z"üStr0
:   If length(Str0)-1=length(Str1)
:      Goto 9
:End
:Lbl 9
:Disp Str0
:Stop
:Lbl 2
:Input "MESSAGE:",Str1
:Input "CLE:",Str2
:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"üStr3
:length(Str1)üY
:length(Str2)üZ
:While A[différent de]Y
:   0üC
:   H+1üH
:   If H>Z
:   Then
:      1üH
:   End
:   sub(Str2,H,1)üStr4
:   inString(Str3,Str4)üP
:   1+FüF
:   If F>Y
:      1üF
:   sub(Str1,F,1)üStr7
:   inString(Str3,Str7)üG
:   G-PüC
:   If C<0
:      C+26üC
:   If C=1
:      Str0+"A"üStr0
:   If C=2
:      Str0+"B"üStr0
:   If C=3
:      Str0+"C"üStr0
:   If C=4
:      Str0+"D"üStr0
:   If C=5
:      Str0+"E"üStr0
:   If C=6
:      Str0+"F"üStr0
:   If C=7
:      Str0+"G"üStr0
:   If C=8
:      Str0+"H"üStr0
:   If C=9
:      Str0+"I"üStr0
:   If C=10
:      Str0+"J"üStr0
:   If C=11
:      Str0+"K"üStr0
:   If C=12
:      Str0+"L"üStr0
:   If C=13
:      Str0+"M"üStr0
:   If C=14
:      Str0+"N"üStr0
:   If C=15
:      Str0+"O"üStr0
:   If C=16
:      Str0+"P"üStr0
:   If C=17
:      Str0+"Q"üStr0
:   If C=18
:      Str0+"R"üStr0
:   If C=19
:      Str0+"S"üStr0
:   If C=20
:      Str0+"T"üStr0
:   If C=21
:      Str0+"U"üStr0
:   If C=22
:      Str0+"V"üStr0
:   If C=23
:      Str0+"W"üStr0
:   If C=24
:      Str0+"X"üStr0
:   If C=25
:      Str0+"Y"üStr0
:   If C=26
:      Str0+"Z"üStr0
:   If length(Str0)-1=length(Str1)
:      Goto 9
:End
:Lbl 3
:ClrHome
:Output(1,1," NE PAS METTRE
:Output(2,1," D'ESPACES DANS
:Output(3,1,"  LES MESSAGES
:Output(5,1," LE MESSAGE EST
:Output(6,1,"  STOCKE DANS
:Output(7,1,"    Str0
:Output(8,1,"(VAR ==> CHAINE)
:Pause
:Goto 45
:Lbl 4
:ClrHome
:Output(2,1,"   PROGRAMME
:Output(3,1,"  CREE , EDITE
:Output(4,1,"  ET DEVELLOPE
:Output(5,1,"  PAR KRIGGLAX
:Output(8,1," COPYRIGHT 2012
:Pause
:Goto 45
:Lbl 5
:Stop



 Adresse email Haut de page Bas de page 
 
Krigglax



Autorisation : Membre
Nb de messages : 6
Inscrit le : Ven 23 Nov 2012, 23:54
Posté le : Dim 25 Nov 2012, 4:41   Citer 

Linkakro , j'ai utilisé les If pour plus de transparence sur le programme , bien sur , il n'est pas optimisé mais c'est une habitude que j'ai pris , et merci Alex d'avoir poster le code , j'avais du mal a me résoudre a le recopier a la main sur le site.

----------------------
"Si Vis Pacem , Para Bellum"
Periclès
 Adresse email Haut de page Bas de page 
 
AlexRider38



Autorisation : Membre
Nb de messages : 139
Inscrit le : Ven 26 Mar 2010, 17:13
Posté le : Dim 25 Nov 2012, 12:13   Citer 

T'inquiète j'ai rien recopié à la main bigmouth.gif .

 Adresse email Haut de page Bas de page 
 
Krigglax



Autorisation : Membre
Nb de messages : 6
Inscrit le : Ven 23 Nov 2012, 23:54
Posté le : Dim 25 Nov 2012, 12:50   Citer 

Comment alors ?

----------------------
"Si Vis Pacem , Para Bellum"
Periclès
 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 661
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Dim 25 Nov 2012, 14:22   Citer 

Grâce à un éditeur de programme (type TI-Editor). Il n'a eu qu'à faire un copié-collé. winkle.gif

 Adresse email Haut de page Bas de page 
 
Krigglax



Autorisation : Membre
Nb de messages : 6
Inscrit le : Ven 23 Nov 2012, 23:54
Posté le : Dim 25 Nov 2012, 14:43   Citer 

Pas mal , merci pour le tuyau

----------------------
"Si Vis Pacem , Para Bellum"
Periclès
 Adresse email Haut de page Bas de page 
 
AlexRider38



Autorisation : Membre
Nb de messages : 139
Inscrit le : Ven 26 Mar 2010, 17:13
Posté le : Dim 25 Nov 2012, 18:30   Citer 


Citer : Le Grec
Grâce à un éditeur de programme (type TI-Editor). Il n'a eu qu'à faire un copié-collé. winkle.gif

et à remplacer les caractères foireux par les codes du forum glasses.gif .

 Adresse email Haut de page Bas de page 
 
Krigglax



Autorisation : Membre
Nb de messages : 6
Inscrit le : Ven 23 Nov 2012, 23:54
Posté le : Lun 26 Nov 2012, 19:13   Citer 

Voila le programme grossièrement optimisé


Code
:Lbl 45
:0üF
:0üH
:0üA
:" "üStr0
:ClrHome
:Menu(">   VIGENERE   <","CODAGE",1,"DECODAGE",2,"INSTRUCTIONS",3,"CREDITS",4,"QUITTER",5
:Lbl 1
:Input "MESSAGE:",Str1
:Input "CLE:",Str2
:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"üStr3
:length(Str1)üY
:length(Str2)üZ
:While A[différent de]Y
:   0üC
:   H+1üH
:   If H>Z
:   Then
:      1üH
:   End
:   sub(Str2,H,1)üStr4
:   inString(Str3,Str4)üC
:   1+FüF
:   If F>Y
:      1üF
:   sub(Str1,F,1)üStr7
:   inString(Str3,Str7)üG
:   C+GüC
:   If C>26
:      C-26üC
: sub(Str3,C,1)üStr7
:Str0+Str7üStr0
:   If length(Str0)-1=length(Str1)
:      Goto 9
:End
:Lbl 9
:Disp Str0
:Stop
:Lbl 2
:Input "MESSAGE:",Str1
:Input "CLE:",Str2
:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"üStr3
:length(Str1)üY
:length(Str2)üZ
:While A[différent de]Y
:   0üC
:   H+1üH
:   If H>Z
:   Then
:      1üH
:   End
:   sub(Str2,H,1)üStr4
:   inString(Str3,Str4)üP
:   1+FüF
:   If F>Y
:      1üF
:   sub(Str1,F,1)üStr7
:   inString(Str3,Str7)üG
:   G-PüC
:   If C<0
:      C+26üC
: sub(Str3,C,1)üStr7
:Str0+Str7
:   If length(Str0)-1=length(Str1)
:      Goto 9
:End
:Lbl 3
:ClrHome
:Output(1,1," NE PAS METTRE
:Output(2,1," D'ESPACES DANS
:Output(3,1,"  LES MESSAGES
:Output(5,1," LE MESSAGE EST
:Output(6,1,"  STOCKE DANS
:Output(7,1,"    Str0
:Output(8,1,"(VAR ==> CHAINE)
:Pause
:Goto 45
:Lbl 4
:ClrHome
:Output(2,1,"   PROGRAMME
:Output(3,1,"  CREE , EDITE
:Output(4,1,"  ET DEVELLOPE
:Output(5,1,"  PAR KRIGGLAX
:Output(8,1," COPYRIGHT 2012
:Pause
:Goto 45
:Lbl 5
:Stop



----------------------
"Si Vis Pacem , Para Bellum"
Periclès
 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 26 Nov 2012, 21:17   Citer 

Voici mes premières étapes d'optimisation.
D'autres sont envisageables.
J'ai tout fait à partir du premier post, je n'ai pas observé le dernier post.
Code
Lbl 45
0üF
0üH
0üA
" "üStr0
ClrHome
0üW
Menu(">   VIGENERE   <","CODAGE",1,"DECODAGE",2,"INSTRUCTIONS",3,"CREDITS",4,"QUITTER",5
Lbl 1
1üW
Lbl 2

"ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789üStr3  // j'ai rajoûté des caractères

Input "MESSAGE:",Str1
Input "CLE:",Str2
length(Str1)üY
length(Str2)üZ

       // je n'ai pas examiné l'algorithme. Plus tard peut-être.
While A-Y     // la soustraction fait comme l'inégalité     
0üC
H+1üH
If H>Z
1üH
sub(Str2,H,1)üStr4
inString(Str3,Str4)üC
1+FüF
If F>Y
1üF
sub(Str1,F,1)üStr7
inString(Str3,Str7)üG


If W   // correspond à " si W non nul " : on crypte
Then
C+GüC
If C>37  // 37 au lieu de 26 à cause des caractères que j'ai ajoûté
C-37üC
Else  // on décrypte
G-CüC
If C<0
C+37üC
End


Str0+sub(Str3,C,1üStr0  // remplace les If

If length(Str0)-1-length(Str1
End
Disp Str0
Stop

Lbl 3
ClrHome
Output(1,1,"ESPACES,LETTRES,   // modifié en lien avec Str3
Output(2,1,"   CHIFFRES,
Output(3,1,"   SUPPORTES
Output(5,1," LE MESSAGE EST
Output(6,1,"  STOCKE DANS
Output(7,1,"    Str0
Output(8,1,"(VAR ==> CHAINE)
Pause
Goto 45
Lbl 4
ClrHome
Output(2,1,"   PROGRAMME
Output(3,1,"  CREE , EDITE
Output(4,1,"  ET DEVELLOPE
Output(5,1,"  PAR KRIGGLAX
Output(8,1," COPYRIGHT 2012
Pause
Goto 45
Lbl 5
   // suppression de Stop


J'ai rassemblé les deux Labels de cryptage et décryptage car ils sont pratiquement identiques.
En particulier la variable P qui se remplace par C.



Code
If length(Str0)-1=length(Str1)  // If length(Str0)-1-length(Str1)
Goto 9                          // End
End                             //
Lbl 9                           //

Il fallait inverser le test pour pouvoir contrôler le End au lieu de Goto. Le test "inégal" est ensuite remplacé par une soustraction des membres.

----------------------
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 
 
charlesjean



Autorisation : Membre
Nb de messages : 32
Inscrit le : Lun 08 Oct 2012, 18:28
Posté le : Lun 26 Nov 2012, 21:52   Citer 

très bonne optimisation,cala donnera des idées aux nouveaux quine savent pas comment le faire

----------------------
une journée sans rire est une journée perdue .
rire 30 minutes par jour rends la santé et augmente la durée de vie!
(ne remplace pas l'avis d'un spécialiste ou d'un professionnel de la santé,veuillez consulter un médecin)
 Adresse email Haut de page Bas de page 
 
Krigglax



Autorisation : Membre
Nb de messages : 6
Inscrit le : Ven 23 Nov 2012, 23:54
Posté le : Mar 27 Nov 2012, 18:27   Citer 

Bien joué , je pense meme qu'on peut mettre ".,?" dans la chaine de référence

----------------------
"Si Vis Pacem , Para Bellum"
Periclès
 Adresse email Haut de page Bas de page 
 
charlesjean



Autorisation : Membre
Nb de messages : 32
Inscrit le : Lun 08 Oct 2012, 18:28
Posté le : Mar 27 Nov 2012, 19:40   Citer 

dans ce cas le mieux est de changer tous les "32" par des "longueur(Chaine3)"

----------------------
une journée sans rire est une journée perdue .
rire 30 minutes par jour rends la santé et augmente la durée de vie!
(ne remplace pas l'avis d'un spécialiste ou d'un professionnel de la santé,veuillez consulter un médecin)
 Adresse email Haut de page Bas de page 
 
ld
Avatar

Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Jeu 29 Nov 2012, 16:35   Citer 

Et moi je crée déjà l'algorithme pour casser le code ! Na ! bigmouth.gif

----------------------
Note Éphéméride Chrono Bombrman BlueFishEncryptor Labygénérateur Nord BandeauDeTexte LunarPhase Syracuse Papy-Jump Convertisseur ! SolveurDeSudoku VérificateurDeCodesBanquaire PrgmADiviser CryptageDeVigenere MiniSolv Reed-Solomon Code128Géodésie
 Adresse email Haut de page Bas de page 
 
charlesjean



Autorisation : Membre
Nb de messages : 32
Inscrit le : Lun 08 Oct 2012, 18:28
Posté le : Jeu 29 Nov 2012, 20:18   Citer 

bonne chance (il te faudra un dictionnaire intégré)

----------------------
une journée sans rire est une journée perdue .
rire 30 minutes par jour rends la santé et augmente la durée de vie!
(ne remplace pas l'avis d'un spécialiste ou d'un professionnel de la santé,veuillez consulter un médecin)
 Adresse email Haut de page Bas de page 
 
ld
Avatar

Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Ven 30 Nov 2012, 15:41   Citer 

Même pas ! Naanaanèèree !! tongue.gif

----------------------
Note Éphéméride Chrono Bombrman BlueFishEncryptor Labygénérateur Nord BandeauDeTexte LunarPhase Syracuse Papy-Jump Convertisseur ! SolveurDeSudoku VérificateurDeCodesBanquaire PrgmADiviser CryptageDeVigenere MiniSolv Reed-Solomon Code128Géodésie
 Adresse email Haut de page Bas de page 
 
AlexRider38



Autorisation : Membre
Nb de messages : 139
Inscrit le : Ven 26 Mar 2010, 17:13
Posté le : Ven 30 Nov 2012, 19:15   Citer 

Comment tu fais?

 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 : Ven 30 Nov 2012, 20:40   Citer 

Crible et mathématiques.
Et peut-être même qu'il exploite des méthodes déjà trouvées.

----------------------
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 Page: 1,      >>





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