Codeur - décobeur basique

Soyez le premier à donner votre avis sur cette source.

Vue 3 717 fois - Téléchargée 158 fois

Description

Ce petit programme très simple code un texte de façon très simple:

1) Il prend la valeur décimale des caractères ascii
2) Rajoute un nombre N et un Nombre H a la suite pour brouiller le tous
3) ... J'crois que c'est tout !

Pas très diffile a trouver le code, il suffit de convertire les 3 chiffre en Ascii qui se situent tout les 7 caractère mais comment le savoir dans tous ces chiffres ?!

Un moyen de, par exemple, laisser un message sur un ordi du bahu pour des potes qui ont le prog pour le traduire sur disquette.

Aventage: la source est assez simple (a mon gout)
Inconvégnant: Par caractère codé correspond 7 chiffres, imaginez pour un message de 100 caractères (ce qui n'est pas beaucoup) !

Source / Exemple :


Private Sub Coder_Click()
Form2.Text1.Text = ""
H = 10
D = 1
C = 2
For i = 1 To Len(Text1.Text) ' lettre par lettre
    A = Asc(Mid(Text1.Text, i, 1)) ' la i éme lettre en decimal
' la suite ne sert a rien seulement embrouiller le code
'-----------------------------------------------------------------------
    If i < 10 Then
        N = i * 10
    Else
        If i < 100 Then
            N = i
        Else
            N = i Mod 100
                If Len(N) < 2 Then
                    N = 0 & N
                End If
        End If
    End If
'-------------------------------------------------------------------------
    T = A
    If Len(T) = 2 Then
        T = 0 & A ' Si le code décimal est égale a 2 chiffres on rajoute un 0 devant
    End If
    If Len(T) = 1 Then
        T = 0 & 0 & A ' Si il est égale a 1 chiffre on en rajoute 2
    End If
' Si dessous sert tjs a rien
'--------------------------------------------------------------------------
    H = H + 3
    If H >= 100 Then
        H = 10
    End If
' -------------------------------------------------------------------------
    Form2.Text1.Text = Form2.Text1.Text & T & N & H
Next i
Form2.Caption = "Code..."
Form2.Show
End Sub

Private Sub Decoder_Click()
If IsNumeric(Text12.Text) Then
    Form2.Text1.Text = ""
    Z = 1
    For y = 1 To Len(Text12.Text)
        Tit = Mid(Text12.Text, Z, 3)
        If IsNumeric(Tit) Then
            Texte = Chr(Tit)
            Form2.Text1.Text = Form2.Text1.Text & Texte
        End If
        Z = Z + 7
    Next y
    Form2.Caption = "Message..."
    Form2.Show
Else
    MsgBox "Le code ne comporte que des chiffres !", vbExclamation, "Error"
End If
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
721
Date d'inscription
dimanche 10 juin 2001
Statut
Membre
Dernière intervention
27 mars 2011
4
tmcuh> moi je dis c toi qui devrait nous faire un petit prog de cryptage ;-)
Messages postés
234
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008

Ouia bo lapsus ;-) !!!!
J'ai bien pris note de tous tes conseil et la prochaine fois que je mettre une source de ce style la sur ce site se sera un big algo (bonne résolution pour cette fin d'année)...
Aller @+ et bon prog...
Ps: Avec les connaissance que tu as tu devrais faire des sources et les déposer sur ce site, mais bon tu fais comme tu veus...
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

je me reconte que j'aurais mieux fait de me relire parfois les phrases ne veulent rien dire pour la fin: c'est illuminé ta lumière ;-)....à moins que c'étais un lapsus révélateur... Oups I'm veritable sorry...

@++ et bonne prog
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

Je préfère te le dire ici que tout le monde en profite plutot qu'en privé.
Pour ce qui est du "brouillage" de piste, on va utiliser ce qu'on appel la bordelisation ce qui veut dire par un moyen assez simple de transformer un texte en un truc qui veut plus rien dire rien qu'en mélangeant les lettres,...je te montre un exemple (celà ce retrouvera dans des sources j'en suis presque sur ;-)...mais allons bon, je poste rien qu'à je pense pas être fort utile, point de vu de mes sources...)

Option Explicit
Dim Tableau(1 To 255) As Byte
Dim Ordre(1 To 255) As Byte

Function Desordre(chaine as string)
Dim i, alea, nbre, Max
Max = 10 'nombre de fois qu'il faut mettre dans le desordre
For nbre = 1 To Max
For i = 1 To 255
Tableau(i) = 0
Ordre(i) = 0
Next i
For i = 1 To Len(Text1)
1
alea = Int(Rnd * 255) + 1
If Tableau(alea) = 0 Then
Tableau(alea) = Asc(Mid(Text1, i, 1))
Ordre(i) = alea
Else
GoTo 1
End If

Next i
Text2 = ""
For i = 1 To 255
Text2 = Text2 & Chr(Tableau(i))
Next i
Next nbre
End function

Function Ordre(chaine as string)
Dim i
For i = 1 To 255
Text5 = Text5 & Chr(Tableau(Ordre(i)))
Next i
end function


A chacun cà manière...celà va de soi...


une fois que j'ai mis la chaine de caractère dans le désordre je n'ai plus qu'à soit la crypter soit la coder. Cependant je veux être à peu près sur que le cryptage ressemble à quelque chose pour celà je vais faire appel à une matrice, où je vais mettre les lettres (qui sont déjà dans le désordre), encore dans le désordre (mais par une méthode celà va de soi). ce qui nous donne un truc dans le genre:

Public Function crypter(Texte As String)
Dim Matrice(1 To 16) As String
Dim Recup(1 To 16) As String
Dim Table(1 To 16) As Integer
Dim CRC(1 To 16) As String
Dim ORD(1 To 16) As String
Dim i As Integer, temps As String
Dim aleatoire As Integer
Dim Textecypter As String
'****************************
Randomize (16)
For i = 1 To Len(Texte)
1 aleatoire = Int((Rnd * 16) + 1) 'crée un nombre aléatoire
If Matrice(aleatoire) = "" Then 'regarde si déjà une lettre dans la case si oui on regénère un nbre
Matrice(aleatoire) = Mid(Texte, i, 1) 'met les lettres(dans l'ordre), n'importe où
Table(i) = aleatoire 'donne où se trouve les lettres(dans l'ordre)
Else
GoTo 1 'si une lettre existe déjà dans la case
End If
Next i
For i = 1 To 16
If Matrice(i) <> "" Then 'regarde si quelquechose dans cette case
CRC(i) = Chr(65 + i) 'si oui donne à crc le positionnement de la lettre(dans le desordre) dans le tableau
End If
Next i
For i = 1 To 16
If Table(i) <> 0 Then: ORD(i) = Chr(65 + Table(i)) 'si une lettre existe alors donne son ordre (ex: text qui est devenu xtet où
Next i
For i = 1 To 16
textecrypter = Matrice(i) & CRC(i) & ORD(i)
Next i
End Function


J'avais commencer ce truc je suis meme pas sur que cà marche, mais bon c le principe.

Ensuite il ne te reste plus qu'à soit coder, soit crypter.
Par codage, celà est simple on transforme soit une lettre attribuer en nombre (ascii), soit on la code suivant le rang qu'elle occupe celà peut donner ainsi:

for i = 1 to len(chaine)
chaine2 = chr(asc(mid(chaine,i,1))+ i )
next i

cependant le problème c qu'on l'aura compris au plus la chaine est grande au plus on tend vers 255 et après c plus possible on peut donc faire comme j'ai sité au part avant, faire un modulo pour que le 255 n'arrive JAMAIS.


Voili voulou, je pense avoir dit un peu de tt. Je pense que tu aura des bonnes idées avec cà (du moins pour démarrer),...tt le code citer précédement vient de mon imagination et des HEURES de recherche... car on trouve pas un algo "valable" sans avoir des idées en têtes.

Aussi tu peux utiliser la fonction XOR pour faire une incondition sur ta lettre et pouvoir la retrouver dans tt les cas... exemple

codage ou décodage
chaine = chaine xor 8 'avec un caractère celà va de soi...

En espérant avoir illiminé ta lumière...
Amicalement TMCUH
Messages postés
234
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008

je comprend...
Pour te répondre: 2 ou 3 petits truc sur "la chose" serais pas de reffut, je débute et tous ce que je peut apprendre me passionne... (j'suis pas très sur que ma phrase veut dire quelque chose mais j'me comprend :-)...
aller @+ et bon prog...
Afficher les 8 commentaires

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.