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

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

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.