Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRYPTAGE XOR EN FONCTION D'UNE CLÉ ET DU CARACTÈRE PRÉCÉDENT


Information sur la source

Catégorie :Sécurité Classé sous : cryptage, xor, codage, caractère, clé Niveau : Débutant Date de création : 16/06/2004 Date de mise à jour : 23/11/2005 20:26:33 Vu / téléchargé: 9 443 / 251

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note


Description

Ces fonctions permettent de coder un texte avec une clé de 1 caractère.
Chaque caractère sera codé avec la clé et le caractère précédent comme ça c'est plus dur à décoder

j'ai bien commenté (je pense) le code affiché dans cette page par contre j'ai pas bcp commenté celui de la source, désolé.
 

Source

  • ' Codage
  • ' Txt c'est le texte à coder
  • ' Clé c'est la clé (1 seul caractère)
  • Public Function CodXor(ByVal Txt As String, ByVal Clé As String) As String
  • ' Les variables
  • Dim Key As String
  • Dim Char As String
  • Dim ExChar As Long
  • Dim Ajout As String
  • ' La clé
  • Key = Asc(Clé)
  • ' Vide la destination
  • CodXor = ""
  • ' Le caractère précédent celui codé est vide car on est au début
  • ExChar = 0
  • ' Code le texte
  • ' on code lettre après lettre
  • For T = 1 To Len(Txt)
  • ' récupère le caractère que l'on traite
  • Char = Mid(Txt, T, 1)
  • ' Codage Xor du caractère (Char) en fonction de la clé (Key) et du caractère précédent (ExChar)
  • Ajout = Chr(Key Xor Asc(Char) Xor ExChar)
  • ' Ajoute le caractère codé à la phrase codée
  • CodXor = CodXor + Ajout
  • ' Sauvegarde le caractère pour le codage de la lettre suivante
  • ExChar = Asc(Char)
  • Next
  • End Function
  • ' Décodage
  • Public Function DeCodXor(ByVal Txt As String, ByVal Clé As String) As String
  • ' Les variables
  • Dim Key As String
  • Dim Char As String
  • Dim ExChar As Long
  • Dim Ajout As String
  • ' La clé
  • Key = Asc(Clé)
  • ' Vide la destination
  • ExChar = 0
  • DeCodXor = ""
  • ' Décode le texte avec la même méthode que le codage
  • For T = 1 To Len(Txt)
  • Char = Mid(Txt, T, 1)
  • Ajout = Chr(Key Xor Asc(Char) Xor ExChar)
  • DeCodXor = DeCodXor + Ajout
  • ExChar = Asc(Ajout)
  • Next
  • End Function
' Codage
' Txt c'est le texte à coder
' Clé c'est la clé (1 seul caractère)
Public Function CodXor(ByVal Txt As String, ByVal Clé As String) As String
    ' Les variables
    Dim Key As String
    Dim Char As String
    Dim ExChar As Long
    Dim Ajout As String
    ' La clé
    Key = Asc(Clé)
    ' Vide la destination
    CodXor = ""
    ' Le caractère précédent celui codé est vide car on est au début
    ExChar = 0
    ' Code le texte
    ' on code lettre après lettre
    For T = 1 To Len(Txt)
        ' récupère le caractère que l'on traite
        Char = Mid(Txt, T, 1)
        ' Codage Xor du caractère (Char) en fonction de la clé (Key) et du caractère précédent (ExChar)
        Ajout = Chr(Key Xor Asc(Char) Xor ExChar)
        ' Ajoute le caractère codé à la phrase codée
        CodXor = CodXor + Ajout
        ' Sauvegarde le caractère pour le codage de la lettre suivante
        ExChar = Asc(Char)
    Next
End Function

' Décodage
Public Function DeCodXor(ByVal Txt As String, ByVal Clé As String) As String
    ' Les variables
    Dim Key As String
    Dim Char As String
    Dim ExChar As Long
    Dim Ajout As String
    ' La clé
    Key = Asc(Clé)
    ' Vide la destination
    ExChar = 0
    DeCodXor = ""
    ' Décode le texte avec la même méthode que le codage
    For T = 1 To Len(Txt)
        Char = Mid(Txt, T, 1)
        Ajout = Chr(Key Xor Asc(Char) Xor ExChar)
        DeCodXor = DeCodXor + Ajout
        ExChar = Asc(Ajout)
    Next
End Function

Conclusion

dites moi si vous avez des idées pour améliorer le codage, s'il ya des défauts, des bugs...
et laissez votre commentaire svp ça aide toujours

@ +
MadMatt
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

13 août 2004 14:42:31 :
petit bug corrigé ;-)
23 novembre 2005 20:26:33 :
Ajout des mots clés

Commentaires et avis

signaler à un administrateur
Commentaire de vlad2i le 17/06/2004 03:29:30

Je ne suis pas méchant d'habitude...

1. Le codage XOR est déjà assez pas fiable comme ca (attaque linéaire et heuristique, on casse un code de 256bits en pas une seconde)

2. Au moins tu aurais pu avoir fait l'effort d'utiliser une clé de plusieurs lettres, ca change peu de choses...

3. En cherchant un peu, on voit des codes comme ca un peu partout sur le site ...

Tu aurais pu chercher à faire un XOR Cracker plutot boy...
Non sérieusement, ton ca revient à changer l'ordre des tables ascii (256 possibles, donc on teste 256 possibilités) avant d'avoir à coup sûr ton message, et meme par là ton code...

(D'autant plus qu'avec un clavier on ne peut saisir que 100 lettres a peu près)

Si tu veux crypter utilise DES, RC4 ou GPG hehe
Tu n'expliques meme pas ce que c'est hehe le cryptage XOR hehe

Alors à défaut, explique :P

Vlad qui aide les gens en étant méchant des fois mais pas souvent.

signaler à un administrateur
Commentaire de vlad2i le 17/06/2004 03:32:17

Pardon, concernant la remarque 1 :

- "on casse un code de 256 OCTETS en pas une MILLIseconde"

Xcuses :P

signaler à un administrateur
Commentaire de MadM@tt le 17/06/2004 09:33:14

Salut vlad2i
lol si t'es pas méchant d'habitude alors d'accord j'accepte tes remarques.
Enfin bon ce code c'est du niveau 1, et puis ça permet à des débutants comme moi de passer à autre chose que du codage Xor simple. Si comme tu dit on peut casser le code hyper facilement alors ok je capitule le codage Xor n'a pas beaucoup d'avenir. Donc je vais essayer de trouver sur ce site des chose plus compliquée mais j'espère que ce code aidera quelques un à s'entrainer dans le domaine du cryptage.
Et si cette source existe déjà sur le site je ne l'avais pas vu, je m'excuse.
Bon tchao à tous
MadMatt

au fait l'idée du Xor cracker c'est pas mal lol

signaler à un administrateur
Commentaire de VBsat62fr le 07/08/2004 15:19:04

Bonjour,
Tout code est bon en soi, même si le niveau est débutant. Continue dans cette voix, les arcanes des API et de l'assembleur te feront franchir les limites de VB ou autres d'ailleurs.
Contrairement à ce que dit 'vlad2i', le XOR est encore très utilisé dans les algo de codage. Tiens au fait 'vlad2i' ton pseudo me laisse supposer que tu peux expliquer l'algo du c2i ? En es-tu là ?
D'ailleurs les PGP, DESS et les différents autres codages sont à base de XOR, LSR, RSL donc de bon vieux algo assembleur!
Ton code est un début et est-il important de savoir cracker un code ou de comprendre son algo ? La question reste posée ?
Pour info j'ai eu l'occasion aux débuts de l'informatique d'utiliser un Oric matériel tombé en désuétude depuis et dans le domaine public, SI, SI !
Eh bien j'ai pris beaucoup plus de plaisir à comprendre comment faisait les programmeurs pour charger leur programmes qui étaient splittés sur cassette que du résultat effectif d'avoir cracké ces derniers. D'ailleurs c'était pour la bonne cause et pouvoir les récupérer pour émulation actuelle, nostalgie quand tu nous tiens...

A +, VBsat62fr.

signaler à un administrateur
Commentaire de vlad2i le 07/08/2004 16:35:26

"Contrairement à ce que dit 'vlad2i'"...

Faut pas exagérer : je ne connais pas un seul code qui l'utilise encore...

Quand à PGP, non, dsl, il n'y a pas de XOR...
Comme je le dit plus haut, sa faiblesse est dans la linéarité des résultats...

DES est tombé dans l'oubli tant il est fragile...

Enfin ceux qui y tiennent, utilisez les, mais vous étonnez pas si ca casse

Quand à c2i (Richard Clark ?) je ne vois pas le moindre rapport avec moi, désolé..

signaler à un administrateur
Commentaire de vlad2i le 07/08/2004 16:36:08

A aucun moment je n'ai critiqué son code. Juste son idée.

signaler à un administrateur
Commentaire de yoman64 le 11/08/2004 19:27:21

Vraiment pratique ce truc .
Seul , c'est pas utile mais si on le combine a un autre systeme de cryptage , sa ajoute bcp de protection , merci je ne connaissais pas la technique XOR.
En passant tu pourrais pas expliquer c'est quoi XOR ?
Merci et Bonne Prog

@++
YoMan64

signaler à un administrateur
Commentaire de yoman64 le 11/08/2004 19:30:07

En passant je crois ke ya un bug :$
Voila je fait :
MsgBox DeCodXor(CodXor("Salut", Chr(2)), Chr(25))
Et sa affiche moi message Salut meme si c'est pas la bonne clef ,alors voila essais darranger sa...

signaler à un administrateur
Commentaire de yoman64 le 11/08/2004 19:33:14

Ok j'ai trouver le pb ;)
C'est parce que tu utilise 2 fois asc pour key donc sa bug et sa prend juste le premier chiffre .


Voila le code corriger:
' Codage
' Txt c'est le texte à coder
' Clé c'est la clé (1 seul caractère)
Public Function CodXor(ByVal Txt As String, ByVal Clé As String) As String
    ' Les variables
    Dim Key As String
    Dim Char As String
    Dim ExChar As Long
    Dim Ajout As String
    ' La clé
    Key = Asc(Clé)
    ' Vide la destination
    CodXor = ""
    ' Le caractère précédent celui codé est vide car on est au début
    ExChar = 0
    ' Code le texte
    ' on code lettre après lettre
    For T = 1 To Len(Txt)
        ' récupère le caractère que l'on traite
        Char = Mid(Txt, T, 1)
        ' Codage Xor du caractère (Char) en fonction de la clé (Key) et du caractère précédent (ExChar)
        Ajout = Chr(Key Xor Asc(Char) Xor ExChar)
        ' Ajoute le caractère codé à la phrase codée
        CodXor = CodXor + Ajout
        ' Sauvegarde le caractère pour le codage de la lettre suivante
        ExChar = Asc(Char)
    Next
End Function

' Décodage
Public Function DeCodXor(ByVal Txt As String, ByVal Clé As String) As String
    ' Les variables
    Dim Key As String
    Dim Char As String
    Dim ExChar As Long
    Dim Ajout As String
    ' La clé
    Key = Asc(Clé)
    ' Vide la destination
    ExChar = 0
    DeCodXor = ""
    ' Décode le texte avec la même méthode que le codage
    For T = 1 To Len(Txt)
        Char = Mid(Txt, T, 1)
        Ajout = Chr(Key Xor Asc(Char) Xor ExChar)
        DeCodXor = DeCodXor + Ajout
        ExChar = Asc(Ajout)
    Next
End Function

signaler à un administrateur
Commentaire de vlad2i le 11/08/2004 20:02:51

yoman > XOR est une opération native sur les bits (eXclusive OR, par opposition au OR ou Inclusive OR)

Tu as 4 portes logiques : AND, OR, NOT et XOR
Tu peux traduire xor par : l'un ou l'autre mais pas les 2

Table de vérité :
a     b     sortie
0     0     0
1     0     1
0     1     1
1     1     0

En prenant en compte que A Xor A = A, on ne peut pas crypter en utilisant le message comme clé..

Mais cette opération a l'avantage de décourager quelques gens et d'etre le code le + rapide a utiliser au monde (forcément hehe) et donc, le + rapide à décoder (aussi :))

signaler à un administrateur
Commentaire de MadM@tt le 13/08/2004 14:32:33

Effectivement chu vraiment con pour avoir laissé passer une erreur pareille, mais bon l'erreur est humaine, le code est corrigé. Merci yoman

@ + tout le monde
MadMatt

signaler à un administrateur
Commentaire de jnspunk le 16/08/2004 12:23:56

dit moi vlad2i, non franchement je voit pas comment casser un message coder par xor.

Si tu masque ton message de départ pour foirer l' analyse heuristique et que tu code avec une clé de 160 octects (et pourquoi pas 1Mo...), tu as aucune chance de trouver la clé!
moi je te souhaite bon courage en tout cas mdrrrrrrrrrr

signaler à un administrateur
Commentaire de vlad2i le 16/08/2004 19:59:16

jnspunk> En ce qui concerne son code, qui utilise une clé de 1 octet, il suffit de passer 256 possibilités (en cherchant un mot en francais, comme "le", ou si on ne connait pas la langue, der, die, das, the, es ...) et de lire les quelques volontaires pour avoir le code, c'est une analyse simple heuristique, ou tu peux essayer une attaque par dictionnaire...

Ensuite, inutile d'utiliser une clé de 1 Mo sur un fichier (ou un message) qui ne fait que 12 octets, à moins que tu veuilles retrouver la clé.

Pour casser un XOR, on utilise une approche linéaire, ou, mieux, des attaques différentielles. En fait, on cassera d'autant plus facilement le code si on a possibilité de voir le message crypté et le message non crypté. Tu cherches un peu sur le net, pour casser XOR et meme DES, et meme AES (Rijndael),(http://www.cryptosec.org/article.php3?id_article=28) et tu trouveras comment faire ce n'est pas la question.

Quand je dis que XOR est facile à casser, ce n'est ni méchant, ni un compte à régler... C'est un fait établi depuis bien longtemps, et ce, quelle que soit la clé.

AES, dont certains logiciels se vantent de la sûreté est sujet aux memes attaques que DES et 3DES... Il n'y a pas d'algorythme vraiment sûr, ce n'est qu'une question de temps et de puissance de calcul.

Sisi, il y a des algos pour casser RSA si vous cherchez bien. La cryptanalyse est un sujet aussi amusant que le cryptage, je vous assure.

Peut etre je le ferais ce XOR cracker, mais je doute qu'il ait du succes, on est pas trop alter-informatique ici :) (lol) on verra :)

signaler à un administrateur
Commentaire de vlad2i le 16/08/2004 20:00:58

Ah je précise aussi, je l'ai laissé sous entendre :

Avec XOR, si on a le message crypté et le message décrypté on a la clé.

A Xor B = C
A Xor C = B
B Xor C = A

signaler à un administrateur
Commentaire de vlad2i le 16/08/2004 20:01:39

et aussi, A Xor A n'est pas égal à A, mais à 0 pardon

signaler à un administrateur
Commentaire de vlad2i le 16/08/2004 20:19:59

Dommage, on m'a devancé :)
Tenez, un décrypteur de XOR :

http://www.vbfrance.com/code.aspx?id=25413

C'est un auteur qui a l'air de s'amuser :)
Son code ne décode que des photos, ca doit pouvoir s'appliquer à d'autres fichiers

Valà :)

signaler à un administrateur
Commentaire de jnspunk le 16/08/2004 23:43:52

ok merci de t' etre pencher sur la question, je v voir sa :)
Mais je suis toujour intrigué!

signaler à un administrateur
Commentaire de jnspunk le 17/08/2004 00:01:24

bah... je suis toujours pas convaincu...
c sur que si on code "blabla" avec une clé "coco" en faisant
'b xor c' puis 'l xor o' puis 'a xor c'  etc.. les technique décrite plus haut fonctionne a coup sur.

mais si on code en faisant
'b xor c' puis 'b xor o' puis 'b xor c' puis b xor o' etc etc
je veut dire par la que l' on code chaque caractere de la chaine par tout les caractere de la clé.

Ca veut dire que si on decode 1 niveau de codage il en reste encore 3 pour une clé de 4 caracteres, et là impossible de reperer des mots... et impossible de savoir cb il y a de niveau d' encodage....
Pour une clé de 160 octets il y a 160 niveau d' encodage à décoder, là je voit pas l' interet des techniques cités plus haut :/

Enfin j' aimerais bien voir un programme capable de casser les messages codées par exemple par l' unité que j' ai programé dans la section delphi :) celui des fichier jpg est inutile ^^

signaler à un administrateur
Commentaire de yoman64 le 17/08/2004 04:23:58

Pour utiliser  une cle a plusieurs caractere pkoi tu fait pas un truc tout simple genre :

    key=255
    For i = 1 To Len(Clé)
    Key = Key Xor Asc(Mid(Clé, i, 1)) Xor Val(Mid(str(i), 1, 2))
    Next
    
En t-k  sa va etre plus dur de casser ton cryptage , mais bon c sur que c'est pas encore incassable :P

@++
YoMan64

signaler à un administrateur
Commentaire de jnspunk le 17/08/2004 10:58:27

vi, c sur que c' est cassable mais faut y mettre les moyens ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Puissance de codage d'une clé [ par MadM@tt ] Salut tout le monde,ça fait super longtemps que j'essaie de calculer la puissance de codage d'une clé (lors du codage d'un fichier ou d'un texte).En f Cryptage [ par Blanc ] Bonsoir,J'aimerai savoir si quelqu'un pouvais m'expliquer comment faire pour crypter (du texte par exemple..) (en VB.Net.....) mais pas de crypter ca CRYPTAGE PAR XOR [ par tekila_bandita ] Je suis en train d'ESSAYER de créer un petit prog de cryptage de fichier au niveau binaire par xor, mais je rencontre quelque probleme, voicila p cryptage de données [ par Tikaf ] Bonjour tout le monde,Je travaille actuellement sur une application développée en VisualBasic .NET qui est protégée par cryptage de données dans une clé [ par Tikaf ] Bonjour tout le monde,J'avais écrit le message suivant dans la rubrique "J'AI BESOIN D'AIDE", mais je n'ai pas eu de réponses.J'espère cryptage et decryptage par une clé [ par idream000 ] bonjour je developpe une application monétaire en utilisant la plate-forme VB.net avec une base données SQLserveur. Avant d'enregistrer les données da Cryptage 128, 256 ????? [ par hippo92210b ] Bonjours, Il u a quelque jour, je me suis intéresser de prés au cryptage et j'ai donc pris une source de cryptage RC4et je voudrai que le texte soi c S.O.S ! clé de cryptage xp non sauvegardée avant reinstallation [ par ralfspark ] salut j ai un gros probleme j ai crypté mes photo sous xp (je sais c'est idiot mais trop tard !),et apres avoir reinstallé xp il refuse de les lire et chaine de caractère [ par clovis23 ] Bonjour!je voudrais savoir comment procéder pour récupérer séparement les voyelles et les consonnes d'un mot saisi dans un texte box sous visual basi rechercher un guillemet dans une chaîne de caractères [ par hotsauce ] bonjour à tous,je souhaite rechercher dans une variable donnée le caractère guillemet; voici le code que j'utilise:if instr(1,val, " " ")<>0 the


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.