CODEUR - DÉCOBEUR BASIQUE

Utilisateur anonyme - 29 mai 2003 à 14:41
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 - 20 juin 2003 à 10:17
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/7262-codeur-decobeur-basique

Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
20 juin 2003 à 10:17
tmcuh> moi je dis c toi qui devrait nous faire un petit prog de cryptage ;-)
zelze Messages postés 234 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 30 juillet 2008
30 mai 2003 à 16:39
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...
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
29 mai 2003 à 20:43
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
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
29 mai 2003 à 20:37
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
zelze Messages postés 234 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 30 juillet 2008
29 mai 2003 à 19:44
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...
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
29 mai 2003 à 17:57
Bon je c'est pas par quoi commencer. Tout dabord je vais répondre à crazyjoke en lui disant que brouiller les pistes cà sert à quelques choses ensuite que le cryptage "césar" et un cryptage simple par ajout d'une valeur à un code ascii, pour donner tt simplement une autre lettre.
Ensuite ce que tu fais ne sert STRICTEMENT A RIEN. Je vais t'expliquer pq. Un décrypteur il va prendre comme exemple "a", il regarde ce que cà fait dans ton cas celà donne : 0971013. Ensuite il prend "aa" ce qui donne : 09710130972016, tu divise la part en 2 (pour une lettre), tu obtient 0971013-0972016 déjà que remarque tu, il commence tt les 2 par 097, tu va voir dans ta table ascii et là par STUPEUR, tu remarque que celà correspond à ta lettre ("a"). Il n'y a donc AUCUN cryptage ni codage.
Solution à ton problème. tu doit non seulement brouiller les "pistes" comme tu le fait, mais en plus tu dois "coder" tes lettres, c à dire leur rajouter 1 (en ascii). Ensuite tu prend un nombre (255 max) crée à partir du nombre de caractère de la chaine. Tu met ce nombre, et juste à coté la différence de ce nombre avec ta lettre, exemple.

nombre_resultant = (Len(Text1) Mod 3) + Asc(Mid(Text1, 1, 1))
-> si tu met "a" celà te donne "98"--> "b" si tu soustrait ta lettre à cette lettr.

A la fin celà te donne un code du style:

Dim nombre_cree As Integer
Dim resultant As Integer
For i = 1 To Len(chaine)
nombre_cree = (Len(chaine) Mod 3) + Asc(Mid(chaine, 1, 1))
resultant = Abs(nombre_cree - Asc(Mid(chaine, i, 1)))
chaine_coder = chaine_coder & Chr(nombre_cree Xor 80) & Chr(resultant Xor 80)
Next i

voilà mais bon je vais pas te faire un cours sur le codage ou le cryptage juste une petite reflection sur la chose (si tu es interresser par la chose je peux tjrs te donner 2-3 ptit truc). Je te met aucune note pour éviter d'en faire baisser une eventuel. Je ne suis pas ici pour abaisser les gens non plus!!!

Amicalement Tmcuh
zelze Messages postés 234 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 30 juillet 2008
29 mai 2003 à 15:06
Je ne ne sais pas...
J'ai rajouter des lignes pour que le code soit encore plus dur a déchiffrer mais bon, je prend note.
Merci de ton conseil et du compliment ;-)...
Utilisateur anonyme
29 mai 2003 à 14:41
je crois (c'est mon avis) que sa ne sert à rien de "broiller" le code, sinon c'est du césar ...
Rejoignez-nous