Cryptage/décryptage de texte par ascii

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 997 fois - Téléchargée 35 fois

Contenu du snippet

Voici une petite source sans prétention, certain on du le faire avant moi, mais j'avais besoin alors je l'ai faite, puis je le mets, ça peut être utile a certains ;)

Source / Exemple :


Public Function crypter(ByVal chainetocrypt As String, ByVal cryptkey As String) As String
Dim crypte As String
crypter = vbNullString
Dim cpt As long
cpt = 1
For i = 1 To Len(chainetocrypt)
    If cpt > Len(cryptkey) Then cpt = 1
        If CInt(Asc(Mid(chainetocrypt, i, 1))) + CInt(Asc(Mid(cryptkey, cpt, 1))) > 255 Then 'on vérifie que la some du code ascii ne soit pas supérieur a 255 sinon erreur
        crypter = crypter & Chr$((CInt(Asc(Mid(chainetocrypt, i, 1))) + CInt(Asc(Mid(cryptkey, cpt, 1)))) - 255) 'si c'est le cas on enlève 255
    Else
        crypter = crypter & Chr$(CInt(Asc(Mid(chainetocrypt, i, 1))) + CInt(Asc(Mid(cryptkey, cpt, 1)))) 'on ajoute le caractère crypté a la fonction
    End If
    cpt = cpt + 1
Next i
End Function

Public Function decrypter(ByVal chainetodecrypt As String, ByVal cryptkey As String) As String
Dim crypte As String
decrypter = vbNullString
Dim cpt As long
cpt = 1
For i = 1 To Len(chainetodecrypt)
    If cpt > Len(cryptkey) Then cpt = 1
        If CInt(Asc(Mid(chainetodecrypt, i, 1))) - CInt(Asc(Mid(cryptkey, cpt, 1))) < 0 Then 'on vérifie que la some du code ascii ne soit pas inférieur a 0 sinon erreur
        decrypter = decrypter & Chr$((CInt(Asc(Mid(chainetodecrypt, i, 1))) - CInt(Asc(Mid(cryptkey, cpt, 1)))) + 255) 'si c'est le cas on ajoute 255
    Else
        decrypter = decrypter & Chr$(CInt(Asc(Mid(chainetodecrypt, i, 1))) - CInt(Asc(Mid(cryptkey, cpt, 1)))) 'on ajoute le caractère décrypté a la fonction
    End If
    cpt = cpt + 1
Next i
End Function

A voir également

Ajouter un commentaire Commentaires
Messages postés
89
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
26 mars 2006

J'ai pondu exactement le même code; a l'exeption que le mien ne marchait pas ;)
Voila je pense que ça va m'aider merci !
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

Exact, je n'avais pas vu que j'avais mis l'instruction avant ;)
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010

Non, la dernière lettre de la clé n'est pas comptée, car avant que cpt (= Len(cryptkey)) ne soit utilisé, en début de boucle, cpt est réinitialisé à 1 à cause du >=.
Met :
MsgBox Mid(cryptkey, cpt, 1)
juste après ta boucle For et tu verras.
Sinon ça va...
8/10 (le principe est pas très original, mais on est beaucoup à être passé par là je crois ^^)
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

Voila, j'ai mis en long.
Et j'ai vérifié, il me semble que le dernier caractère de cryptkey est pris en compte, car
mid("text",len("text"),1) renvoi la dernière lettre de "text", donc si cpt = len(cryptkey), mid(cryptkey,cpt,1) devrait renvoyer la dernière lettre Voila.
Pour ce qui est du cracking, me doute que il est très facile de trouver la clef de cryptage, par bruteforce ou par autre moyen, mais sur un texte non donné, le cracker ne sais pas quel est le retour de la chaine, donc il y a un grand nombre de possibilité.
Note, je suis ouvert a toute critique.
Note 2, je pense pas que ma source ai quelque chose d'inovante, néanmoins je l'ai faite pour moi, et ça peut toujours servir a d'autres ;)
Messages postés
23
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
14 janvier 2005

Salut,

Première chose :
Le dernier caractère de la clé n'est pas utilisé :

If cpt >Len(cryptkey) Then cpt 1

Tu aurais dû écrire :

If cpt > Len(cryptkey) Then cpt = 1

Deuxième chose :
Tu déclare cpt en Integer, ton programme perds de la rapidité d'exécution (il fonctionne moins vite). Pour l'optimiser, il faudrait déclarer tes variables numériques en Long, ça prend un peu plus de place en mémoire, mais ça booste énormément l'exécution (cf. : catégorie Optimisation sur le site).

Troisième chose et la plus importante :
Fais gaffe, pour un cracker y'a rien de plus simple à décrypter. ;o)

Ne prends pas mal ce que je dis, c'est pas le but. J'émets juste des critiques constructives. :oP
Sinon pour les débutants, c'est cool d'apprendre à utiliser les codes ascii -> 7/10.

Bon codage, a++
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.