Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Projet d'algorithme de cryptage symétrique (problème avec le


AViframar Invité

Projet d'algorithme de cryptage symétrique (problème avec le

Posté le 31/03/2016 22:57

Bonsoir tout le monde,

Je suis sur un projet d'algo de cryptage utilisant la même clef a l'encodage comme au décodage. Malheureusement j'ai rencontré un problème sur le prog d'encodage. La casio Graph35+ (modifiée en 75) me gratifie d'une erreur mémoire. c'est sans doute du a ma méconnaissance relative des strings. Tout est détaillé dans le .txt ou figurent code source et commentaires personnels.

Merci d'avance...

Fichier joint


Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 01/04/2016 06:49 | #


Je dirais que le problème vient de là :
Do                           // la boucle prend ensuite tous les caract�res en charge a partir du 2e
Str 3->Str 4
StrLeft(Str 1,1)->Str 2
StrShift(Str 1,1)->Str 1
StrSrc(Str 3,Str 2)->E
E+List 1[F]->G
G>=27=>G-27->G
StrRotate(Str 4,G)->Str 4
StrLeft(Str 4,1)->Str 5
StrJoin(Str 6,Str 5)->Str 6     // a ce niveau chaque nouvelle lettre encod�e (str 5) vient se rajouter au message cod�
F=10=>0->F                      // (str 6)
F<10=>Isz F
StrLen(Str 6)->H
LpWhile H>0                     // Le message est compl�tement encod� lorsque la longueur (StrLen) du message original
                                // devient nulle


Le StrJoin(Str 6, Str 5) ajoute indéfiniment le Str 5 au Str 6 vu que StrLen(Str 6) sera toujours supérieure à 0 et donc que la boucle est une boucle infinie. Au bout d'un moment le Str 6 dépasse la longueur de 255 octets et ça fait une erreur mémoire.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Programateur Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 01/04/2016 09:55 | #


Bonjour !
Quelques conseils pour ton programme :
tu peux remplacer
StrLen(Str 6)->L            // On purge le string qui recevra le message encod�
Do
StrShift(Str 6,1)->Str 6
Dsz L
LpWhile L!=0

Par tout simplement
""->Str 6


Ensuite, il est plus propre de remplacer
Lbl 1

"Saisissez votre clef        // La clef de chiffrement est saisie ici. elle comporte 10 caract�res
de chiffrement"
?->Str 2
...
A!=10=>Goto 1

par
Do
...
LpWhile A!=10

Enfin ça c'est plus du détail.
N'hésite pas à remplacer
Do
...
Isz B
LpWhile B<11

par
For 1->B To 10
...
Next

Au passage dans cette boucle tes variables B et D ont la même valeur !!!
Pour le reste dsl j'ai pas le temps de tout regarder. Je pense qu'une des raisons de ton problème est la suivante :
La fonction StrShift ne change pas la longueur de la chaîne ! Il décale et rajoute des espaces !
D'autre part tu ajoutes la Str 5 à la Str 6, ta condition se répète tant que la longueur de la Str 6 n'est pas nulle ! La boucle ne s'arrête donc qu'avec une erreur mémoire.
J'espère que ça t'aidera.
J'ai besoin de votre participation ici :
94%
Cliquer pour enrouler


AViframar Invité

Citer : Posté le 01/04/2016 19:16 | #


Merci à vous deux pour vos réponses !

en effet @zezombye, j'avais écrit str 6 au lieu de str1
le programme fonctionne maintenant.
Je vais procéder aux améliorations nécessaires (merci @programateur) et ajouter une ou deux fonctionnalités puis je réaliserais le programme de décodage. Je posterais tous ceci sur ce topic quand j'aurais fini !

merci encore...
Aviframar Hors ligne Membre Points: 22 Défis: 0 Message

Citer : Posté le 02/04/2016 16:06 | #


Voila c'est bon mon programme est terminé dans sa version 1.0

http://www.planet-casio.com/Fr/programmes/programme3070-1-Cryptocalypse-aviframar-programme.html
Programateur Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 02/04/2016 21:38 | #


Bonjour !
Excuse moi si je n'ai pas encore regardé ton nouveau programme en détails, juste je ne comprends pas bien ce code :
Do                              // Une pression sur "DEL" (Gtk=44) déclenche
0->Z                            // l'effacement des données et l'arrêt du programme
Getkey->A
A=44=>Goto 1
LpWhile Z=1
Lbl 1

Parce que du coup si je ne me trompe pas la boucle ne s'effectue qu'une fois... A quoi sert-elle ?
J'ai besoin de votre participation ici :
94%
Cliquer pour enrouler
Aviframar Hors ligne Membre Points: 22 Défis: 0 Message

Citer : Posté le 03/04/2016 14:22 | #


En fait la boucle tourne en continue jusqu’à ce que l'utilisateur décide d'y mettre fin en pressant del. En effet, comme les str sont affichés par des Locate, si le nettoyage des données s'effectuait immédiatement, l'utilisateur n'aurait pas le temps de lire le message... Je ne sais pas si mon explication est très claire
Programateur Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 03/04/2016 16:04 | #


Oui je comprend le principe mais comme dès le départ Z=0 la boucle
Do
...
LpWhile Z=1

ne tourne qu'une fois...
J'ai besoin de votre participation ici :
94%
Cliquer pour enrouler

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 108 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd