Pas de quoi pour gagner un prix Nobel... Il s'agit simplement d'une micro librairie d'encodage de type XOR. Une version de Lecture et d'Écriture sur fichier binaire est également incluse.
Le code est compatible en mode Ascii et Unicode (En mode Unicode la chaîne encodé n'est pas lisible, possiblement que la valeur des caractères encodés sont trop grandes pour correspondre à des valeurs valides, cela ne gène en rien le fonctionnement.)
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Read/Write XOR Encoded String
; Nom du fichier : Read Write XOR Encoded String.pb
; Version du fichier : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 11-06-2011
; Mise à jour : 11-06-2011
; Code PureBasic : 4.60 Beta 3
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Macro Looping(P_Number, P_Minimum, P_Maximum)
P_Number = P_Number + 1
If P_Number > P_Maximum
P_Number = P_Minimum
EndIf
EndMacro
Procedure.s XOREncodeString(Key.s, Text.s)
KeyLength = Len(Key)
TextLength = Len(Text)
For Index = 1 To TextLength
Looping(KeyIndex, 1, KeyLength)
Encoded.s = Encoded + Chr(Asc(Mid(Text, Index, 1)) ! ~Asc(Mid(Key, KeyIndex, 1)))
Next
ProcedureReturn Encoded
EndProcedure
Procedure WriteXOREncodedString(FileID.l, Key.s, Text.s)
KeyLength = Len(Key)
TextLength = Len(Text)
WriteLong(FileID, TextLength)
For Index = 1 To TextLength
Looping(KeyIndex, 1, KeyLength)
WriteCharacter(FileID, Asc(Mid(Text, Index, 1)) ! ~Asc(Mid(Key, KeyIndex, 1)))
Next
EndProcedure
Procedure.s ReadXOREncodedString(FileID.l, Key.s)
KeyLength = Len(Key)
TextLength = ReadLong(FileID)
For Index = 1 To TextLength
Looping(KeyIndex, 1, KeyLength)
Encoded.s = Encoded + Chr(ReadCharacter(FileID) ! ~Asc(Mid(Key, KeyIndex, 1)))
Next
ProcedureReturn Encoded
EndProcedure
Key.s = "PureBasic 4.60 Beta 3"
Text.s = "J'aime les déesses nordiques super sexy !"
Encoded.s = XOREncodeString(Key, Text)
Decoded.s = XOREncodeString(Key, Encoded)
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Essai sur chaîne de caractère"
Debug ""
Debug Text
Debug Encoded
Debug Decoded
Debug ""
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Essai sur fichier"
Debug "Original : " + Text
If CreateFile(0, "Test.Enc")
WriteXOREncodedString(0, Key, Text)
CloseFile(0)
EndIf
If ReadFile(1, "Test.Enc")
Debug "Depuis le fichier : " + ReadXOREncodedString(1, Key)
CloseFile(1)
DeleteFile("Test.Enc")
EndIf
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<