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
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.