Codéo : crypter des fichiers avec une chaîne de caractères; clée infinie (et décrypter)

Soyez le premier à donner votre avis sur cette source.

Vue 6 715 fois - Téléchargée 741 fois

Description

J'ai fait un codeur de fichier simple et efficace, extrait d'un de mes logiciels. La longueur de la clée est infinie donc bonne protection.

Au fait :
code = clé d'encodage (ou décodage)
Fichier_In = fichier à coder/décoder
Fichier_Out = fichier de sortie

Je n'ai pas essayé voir ce que ça donnait de laisser fichier_in et fichier_out pareil, je vous laisse tester.

Ici il y a les fonctions, je laisserai peut être le code entier une autre fois
J'ai aussi mis une capture du logiciel
J'ai rajouté le logiciel : téléchargez le zip

Fonctionnement:
- Lit un octet
- Ajoute la valeur ASCII d'une lettre du code à cet octet
- Ecrit l'octet dans un autre fichier

Je pense avoir été assez clair

Source / Exemple :


Function Codeo(Fichier_In As String, Fichier_Out As String, Code As String)

On Error GoTo fincodage

Dim g As Long
Dim a As String
Dim Fichier As String
Dim decalage As Integer
Dim x, l As String
Dim y As Integer
Dim b As Byte

a = Code

Open Fichier_In For Binary As #1
Open Fichier_Out For Binary As #2

Do
For g = 1 To Len(a)
        If EOF(1) Then GoTo fincodage
        Fichier = Input(1, #1)
        decalage = Asc(Mid(a, g, 1))
        x = Fichier
        y = Asc(x) + decalage
        b = Transfo_Byte(y)
        l = Chr(b)
        Put #2, , l
Next
Loop

fincodage:
Close #1
Close #2

End Function

Function DeCodeo(Fichier_In As String, Fichier_Out As String, Code As String)

On Error GoTo findecodage

Dim g As Long
Dim a As String
Dim Fichier As String
Dim decalage As Integer
Dim x, l As String
Dim y As Integer
Dim b As Byte

a = Code

Open Fichier_In For Binary As #1
Open Fichier_Out For Binary As #2

Do
For g = 1 To Len(a)
        If EOF(1) Then GoTo findecodage
        Fichier = Input(1, #1)
        decalage = Asc(Mid(a, g, 1))
        x = Fichier
        y = Asc(x) - decalage
        b = Transfo_Byte(y)
        l = Chr(b)
        Put #2, , l
Next
Loop

findecodage:
Close #1
Close #2

End Function

Function Transfo_Byte(a As Integer) As Byte

If a < 0 Then
    Do While a < 0
        a = a + 256
    Loop
End If
If a > 255 Then
    Do While a > 255
        a = a - 256
    Loop
End If
Transfo_Byte = a

End Function

Conclusion :


Précision : la fonction transfo_byte ajoute ou retire 255 pour que la valeur à ecire dans le fichier de sortie soit bien un octet.

Autre chose :
Ces fonctions ont un avantage sur celles qui codent des chaînes de caractères, car il n'y a pas de limite sur la taille du fichier. (au bout de quelques Mo le codage dure + de 2s)

Bon je ne pense pas que ce soit le meilleur codeur qui soit mais il est sur !
Et si vous trouvez des bugs notifiez les please

a ++

MadM@tt
Matthieu Napoli

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

MadM@tt
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
J'ai ajouté l'executable final

Dites moi ce que vous en pensez !

Et est ce que quelqu'un peut me donner des renseignement sur la façon dont on calcule la puissance de codage d'une clé
ça m'aidera pas mal

Merci
MadM@tt
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
utilise les fonctions Codeo pour coder et Decodeo pour décoder
(avec comme paramêtres les noms des fichiers)

exemple (pas téesté je crois que ça marche)

' Code
Codeo("C:Autoexec.bat", "C:Autoexec Codé.bat", "Bonjour")
' Décode
DeCodeo("C:Autoexec Codé.bat", "C:Autoexec Décodé.bat", "Bonjour")
cs_yannn
Messages postés
130
Date d'inscription
mercredi 4 septembre 2002
Statut
Membre
Dernière intervention
5 janvier 2009
-
J'arrive pas a l'utiliser ... tu pourrais pas mettre un fichier zip pour exemple ?
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15 -
Un seul commentaire, tu devrais donner des noms un peu plus représentatifs à tes variables

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.