Codage et décodage de nombre ou de chiffre

Soyez le premier à donner votre avis sur cette source.

Vue 5 543 fois - Téléchargée 382 fois

Description

cet source permet au débutant de comprendre la cryptographie, c'est à dire de rendre un code incompréhensible pour les utilisateurs qui n'ont pas "la clé".

Pour les initié, il s'agit d'une comparaison de chaine avec la clé, chaque chiffre est remplacer par un caractère 'alphanumerique'.

Source / Exemple :


///Encodage

Private Sub Command1_Click()

Dim clé As String
clé = "aqwzsxedcrfvtgbyhnujikolpm&é'(-è_çà)=^$ù*,;:!~#{[|`\^@]}¤AQWZSXEDCRFVTGBYHNUJ?IK.OL/PM§%µ¨£°+"
Dim Max As Single
Max = Len(clé)
Dim SeRr(500)
For a = 1 To Max
SeRr(a) = Mid(clé, a, 1)
Next

Dim Max2 As Single
Max2 = Len(Text1.Text)
Dim Mat(500)
For a = 1 To Max2
Dim caract As String
caract = Mid(Text1.Text, a, 1)

If caract = "," Then
Mat(b) = SeRr(x)
b = b + 1
Mat(b) = "²"
b = b + 1
x = 0
End If

If caract = " " Then
Mat(b) = SeRr(x)
b = b + 1
Mat(b) = " "
b = b + 1
x = 0
End If

If x & Val(caract) >= Max Then
Mat(b) = SeRr(x)
b = b + 1
x = 0
End If

x = x & Val(caract)

If a = Max2 Then Mat(b) = SeRr(x)
Next
Dim T As String
For a = 0 To b
T = T & Mat(a)
Next

Text2.Text = T
End Sub

//Décodage

Private Sub Command2_Click()
Text3.Text = ""
Dim clé As String
clé = "aqwzsxedcrfvtgbyhnujikolpm&é'(-è_çà)=^$ù*,;:!~#{[|`\^@]}¤AQWZSXEDCRFVTGBYHNUJ?IK.OL/PM§%µ¨£°+"
Dim Max As Single
Max = Len(clé)
Dim SeRr(200)
For a = 1 To Max
SeRr(a) = Mid(clé, a, 1)
Next

Dim T As String
Dim Max2 As Single
Max2 = Len(Text2.Text)
For a = 1 To Max2
Dim caract As String
caract = Mid(Text2.Text, a, 1)
    For b = 1 To Max
        If caract = "²" Then
        T = T & ","
        Exit For
        End If
        
        If caract = " " Then
        T = T & " "
        Exit For
        End If
        
        If SeRr(b) = caract Then
        T = T & b
        End If
    Next
Next
Text3.Text = T
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
Dim clé As String
clé = "aqwzsxedcrfvtgbyhnujikolpm&é'(-è_çà)=^$ù*,;:!~#{[|`\^@]}¤AQWZSXEDCRFVTGBYHNUJ'IK.OL/PM§%µ¨£°+"

utilises donc un Const

Dim Max As Single
Max = Len(clé)

Pourquoi utiliser une variable décimale pour stocker un nombre de caractères ?

Dim SeRr(500)

pourquoi 500 ? pourquoi un tableau de Variant ?
zulrigh
Messages postés
24
Date d'inscription
samedi 10 janvier 2009
Statut
Membre
Dernière intervention
7 juin 2014
-
j'ai mis 500 c'était pour avoir un maximum de caractère (fait à la rache !), mais il vaudrais mieux utiliser un tableau de longueur variable c'est juste !

Les quelques autres lignes pourrait se faire un peu plus "en live" comme tu disais, mais comme je t'ai dit c'est fait à la vas vite il y a un bout de temps déjà !
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
Sans trop chercher à comprendre le code, après nettoyage, j'obtiens :

Option Explicit

Private Const CLE As String = "aqwzsxedcrfvtgbyhnujikolpm&é'(-è_çà)=^$ù*,;:!~#{[|`\^@]}€AQWZSXEDCRFVTGBYHNUJ'IK.OL/PM§%µš£°+"

Private Sub Command1_Click()
Dim i As Long
Dim x As Long
Dim sChar As String
Dim LongueurCle As Long
Dim Resultat As String
LongueurCle = Len(CLE)
For i = 1 To Len(Text1.Text)
sChar = Mid$(Text1.Text, i, 1)

If sChar = "," Then
Resultat = Resultat & Mid$(CLE, x + 1, 1) & "²"
ElseIf sChar = " " Then
Resultat = Resultat & Mid$(CLE, x + 1, 1) & " "
End If

If Val(Str$(x) & Val(sChar)) >= LongueurCle Then
Resultat = Resultat & Mid$(CLE, x + 1, 1)
x = Val(sChar)
Else
x = Val(Str$(x) & Val(sChar))
End If
Next
Resultat = Resultat & Mid$(CLE, x + 1, 1)
Text2.Text = Resultat
End Sub

Private Sub Command2_Click()
Dim i As Long
Dim x As Long
Dim sChar As String
Dim Resultat As String
For i = 1 To Len(Text2.Text)
sChar = Mid$(Text2.Text, i, 1)
If sChar = "²" Then
Resultat = Resultat & ","
ElseIf sChar = " " Then
Resultat = Resultat & " "
Else
For x = 1 To Len(CLE)
If Mid$(CLE, x, 1) = sChar Then
Resultat = Resultat & (x - 1)
Exit For
End If
Next
End If
Next
Text3.Text = Resultat
End Sub
zulrigh
Messages postés
24
Date d'inscription
samedi 10 janvier 2009
Statut
Membre
Dernière intervention
7 juin 2014
-
Oué c'est pas mal du tout, j'y jéteré un oeil, mais là j'ai d'autre truc à faire ...
Crash Ov
Messages postés
11
Date d'inscription
jeudi 20 octobre 2005
Statut
Membre
Dernière intervention
7 juillet 2009
-
Pas mal ! mais avec "10001" il retourne 101 lors du décryptage.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.