CODEUR À CLE

cs_SpOrTiF Messages postés 62 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 2 septembre 2008 - 28 déc. 2006 à 00:39
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 3 janv. 2007 à 03:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40874-codeur-a-cle

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 janv. 2007 à 03:11
Bonjour,

Une fonction pour trouver le nombre magik:

Private Function Calcul_Magik(cle As Integer) As Integer
Dim i As Integer
For i = 1 To 36
If (cle * i) Mod 37 = 1 Then
Calcul_Magik = i
Exit For
End If
Next
End Function

voici le résultat pour les premières valeurs
Cle 2: Magik 19
Cle 3: Magik 25
Cle 4: Magik 28
Cle 5: Magik 15
Cle 6: Magik 31
Cle 7: Magik 16
Cle 8: Magik 14
Cle 9: Magik 33
Cle 10: Magik 26
Cle 11: Magik 27
Cle 12: Magik 34
Cle 13: Magik 20

pour les autres valeurs modulo 37 c'est la même chose
ainsi la valeur 457 correspond au 13 (457 = 12*37 + 13)
qui a pour correspondant le nombre magik 20 (ou 57,94,131,168,205,242,etc ...)

il y a un problème dans le codage pour la lettre "A", comme R=0 elle sera codée de la même façon (donc toujours "A") quelle que soit la clé

d'ailleurs il y a une erreur dans le code, c'est toujours la lettre "A" qui est répétée
If Mid(Text2.Text, x, 1) "a" Or Mid(Text2.Text, x, 1) "A" Then R = 0
If Mid(Text2.Text, x, 1) "b" Or Mid(Text2.Text, x, 1) "A" Then R = 1
If Mid(Text2.Text, x, 1) "c" Or Mid(Text2.Text, x, 1) "A" Then R = 2
If Mid(Text2.Text, x, 1) "d" Or Mid(Text2.Text, x, 1) "A" Then R = 3
If Mid(Text2.Text, x, 1) "e" Or Mid(Text2.Text, x, 1) "A" Then R = 4
If Mid(Text2.Text, x, 1) "f" Or Mid(Text2.Text, x, 1) "A" Then R = 5
If Mid(Text2.Text, x, 1) "g" Or Mid(Text2.Text, x, 1) "A" Then R = 6
etc ...

tu pourrais simplifier tous ces tests par une fonction plus simple pour la recherche de R:
c$ = Ucase$(Mid(Text2.Text, x, 1))
R = Chr$(Asc(c) - 65) (uniquement pour les lettres)

ou pour l'ensemble:
s$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ., !éèà?'()"
R = InStr(s$, c$) - 1
niicoola Messages postés 19 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 15 janvier 2007
30 déc. 2006 à 15:21
salut,
mon programme associe à chaque lettre un nombre de 0 à 25, ensuite à chaque virgule, point d'interrogation, etc un nombre de 26 à 36. ne nombre est nommé num ou R , ensuite pour coder le programme prend le reste de la division euclidienne du produit R*clé par 37.à chaque valeur de ce reste est associé une lettre ou un caractère puisque ce reste est compris entre 0 et 36 inclus.ensuite pour le decodage il faut calculer un nombre que je nomme magik tel que clé * magik + 37* nombre = 1
ce nombre est la clé du decodage puisque on prouve que R est le reste de la division euclidienne du produit reste*magik par 37.
voila pour le mecanisme.
ce programme permet de coder des textes, par exemple pour écrir un journal intime etc..
le seul problème que je n'ai pas encore résolu c'est comment programmer le calcul de magik
cs_SpOrTiF Messages postés 62 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 2 septembre 2008
28 déc. 2006 à 00:39
Salut,

Serait intéressant que tu donnes une description plus détaillée de ce que fait ton programme.
Ton projet me semble intéressant, mais je ne vois pas a quoi il peut servir etc.

Bref; j'aimerais que tu mettes une description de ton projet pour que je puisse avoir une meilleur idée de l'ensemble de ton projet.

SpOrTiF
Rejoignez-nous