Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Sam 19 Mar 2011, 8:26
d'habitude je code tout avec le système de césar, ça transforme le message en une suite de chiffres avec lesquels on peut faire tout plein d'opérations mathématiques pour brouiller...
bien sur je ne mets pas les lettres dans l'ordre dans la clé de décryptage, ce serait trop facile...
ps: je vois qu'il y a trois membres sur le fofo... venez sur le tchat!
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 20 Mar 2011, 23:12
Je suis très curieux de connaître cet algorithme Epates moi !
Tu me donnes envie de bricoler sur ma calcu la même chose que ma spé math sur ordi. Même cela ne sera sûrement pas aussi bien que ton algorithme.
Et j'ai aussi une idée originale que je n'ai pas appliqué comme voulu faute de connaissances en prog d'ordi. Reste à voir si ça sert à quelque chose sur calto.
---------------------- 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)
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 11 Juil 2012, 18:30
EDIT 6/8/12 pour ceux qui débarquent : un message de ld (autrefois appelé l.davin) ci-dessus a été supprimmé (par son propriétaire semble-t-il). Il présentait la version initiale du programme.
--------
version 2
Code
// j'ai supprimmé ce qui me semblait innutile
0->rand // réinitialise les aléatoires // version 2.1
"ABCDEFGHIJKLMNOPQRSTUVWXYZ?! ',.0123456789->Str0
Input Str1
Input "CLEF ",C
1->D
Menu("","CODE",1,"DECODE",2
Lbl 2
2->D
Lbl 1
C->rand // version 2.2
randInt(0,1,C // innutile de faire varier l'intervalle
length(Str1->L
ClrList L1 // nécessaire
For(A,1,L
inString(Str0,sub(Str1,A,1->L1(A // remplace la boucle de recherche
End
If D=1:L1+randInt(1,42,L->L1
If D=2:L1-randInt(1,42,L->L1 // il y avait un L2 au lieu de L1
" "->Str1
ClrHome
For(A,1,L
Str1+sub(Str0,L1(A)-42int((L1(A)-1)/42),1)->Str1 // pseudo modulo (excluant 0)
Output(8,1,L-A
End
Pause Str1
Tu comptes sur l'initialisation des aléatoires pour que la liste des constantes ajoûtées à celle du texte soit difficile à prévoir mais unique pour chaque valeur de clé.
Il suffit d'initialiser rand pour que le reste fonctionne. (rand=NbrAléat)
Par "modulo excluant 0" je désigne l'opération que nos deux versions effectuent, et plus particulièrement son expression par la division euclidienne.
Le modulo pouvait aussi être simplifié avec
L1(A)-42(42<L1(A))+42(1>L1(A))
Je propose d'initialiser les aléatoires avec la valeur de la clé.
Ainsi il suffit de supprimmer ma première ligne puis d'écrire C->rand après Input. (voir les commentaires "version 2.1" et "version 2.2")
---------------------- 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)
---------------------- 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)
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 12 Juil 2012, 14:04
Bien !
Cependant tu n'as pas besoin de la liste L1 : regarde ma v 2.3 comme exemple.
Tu peux utiliser une variable numérique, ou même Rép/Ans et ne pas préparer la liste.
Lorsque tu veux vider la liste, il est risqué d'utiliser EffVar : il faudra définir la variable avant de pouvoir de nouveau la manipuler.
Il vaut mieux utiliser EffList qui vide la liste.
Je préfère le Menu au Input pour contrôler le codage/décodage, mais fais comme tu veux, ça marche bien comme tu as fais.
---------------------- 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)
Autorisation : Membre
Nb de messages : 300
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Ven 13 Juil 2012, 17:45
Je doit être le seul mais... je squatte presque que tout82!
(pour ça que je n'ai rien à faire de mes journées )
Pour le programme je le trouve... Enorme
Associé à http://tout82.free.fr/forum/sujet.php?sujet=3328 de maxence on pourra crypter ses programme
Il reste quand même une ligne de ton programme que je ne comprend qu'à moitié et j'aimerai une confirmation.
Code
sous-Chaîne(Chaîne0,Rép-42partEnt((Rép-1)/42)
cette ligne soustrait 42 si la valeur est supérieure à 42?
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 13 Juil 2012, 17:57
Son équvalent conditionnel (dans le cas précis de ce programme) est :
Rép-42(42<Rép)+42(1>Rép)
Donc oui cela enlève 42 si c'est suppérieur à 42, et cela ajoute 42 si c'est inférieur à 1.
---------------------- 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)
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 13 Juil 2012, 22:48
caractère inconnu :
La fonction inString/carChaîne renvoie 0 lorsqu'elle ne trouve pas la seconde chaîne dans la première.
Et le 0 se transforme en 42 lors du modulo d'affichage, d'où le caractère "9" après le décryptage.
Modification d'un programme via un autre :
Il faut de l'assembleur ou coller manuellement une chaine de caractères dans un programme.
---------------------- 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)
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Lun 16 Juil 2012, 17:56
Question:
Il y a 96 x 64 pixels sur l'écran, soit 6144.
Si on divise ce nombre par 8. Puisqu'il y a 8 bits dans un octet on trouve 768. La taille d'une image est de 764. Cela aurait'il un rapport ?