Fichier Encodé - Crypté

Il est important de noter que les instructions sur les fichiers encodés ou cryptés (voir l'onglet Méthodes 2) utilisent des librairies utilisateurs pré-programmés. L'encodage se fait sans sans clé et n'est donc pas très sécurisé contrairement au cryptage qui nécessite une clé. Les librairies doivent être des modules et doivent également suivre une syntaxe précise. Exemple de librairie d'encodage matricielle généré par Dev-Module :

MatrixEncoded::ME_WriteString(FileID.l, P_String.s)
MatrixEncoded::ME_WriteByte(FileID.l, P_Value.b)
MatrixEncoded::ME_WriteAsciiCharacter(FileID.l, P_Value.a)
MatrixEncoded::ME_WriteWord(FileID.l, P_Value.w)
MatrixEncoded::ME_WriteCharacter(FileID.l, P_Value.c)
MatrixEncoded::ME_WriteUnicodeCharacter(FileID.l, P_Value.u)
MatrixEncoded::ME_WriteLong(FileID.l, P_Value.l)
MatrixEncoded::ME_WriteQuad(FileID.l, P_Value.q)
MatrixEncoded::ME_WriteInteger(FileID.l, P_Value.i)
MatrixEncoded::ME_WriteFloat(FileID.l, P_Value.f)
MatrixEncoded::ME_WriteDouble(FileID.l, P_Value.d)
Resultat.s = MatrixEncoded::ME_ReadString(FileID.l)
Resultat.b = MatrixEncoded::ME_ReadByte(FileID.l)
Resultat.a = MatrixEncoded::ME_ReadAsciiCharacter(FileID.l)
Resultat.w = MatrixEncoded::ME_ReadWord(FileID.l)
Resultat.c = MatrixEncoded::ME_ReadCharacter(FileID.l)
Resultat.u = MatrixEncoded::ME_ReadUnicodeCharacter(FileID.l)
Resultat.l = MatrixEncoded::ME_ReadLong(FileID.l)
Resultat.q = MatrixEncoded::ME_ReadQuad(FileID.l)
Resultat.i = MatrixEncoded::ME_ReadInteger(FileID.l)
Resultat.f = MatrixEncoded::ME_ReadFloat(FileID.l)
Resultat.d = MatrixEncoded::ME_ReadDouble(FileID.l)

Comme le montre l'exemple ci-haut, il y a une commande pour chacun des types standard de PureBasic pour l'écriture et pour la lecture précédé par le préfixe ME_. Voyons maintenant un exemple de cryptage de type XOR avec une clé :

XOREncoded::XORE_WriteString(FileID.l, P_Key.s, P_String.s)
XOREncoded::XORE_WriteByte(FileID.l, P_Key.s, P_Value.b)
XOREncoded::XORE_WriteAsciiCharacter(FileID.l, P_Key.s, P_Value.a)
XOREncoded::XORE_WriteWord(FileID.l, P_Key.s, P_Value.w)
XOREncoded::XORE_WriteCharacter(FileID.l, P_Key.s, P_Value.c)
XOREncoded::XORE_WriteUnicodeCharacter(FileID.l, P_Key.s, P_Value.u)
XOREncoded::XORE_WriteLong(FileID.l, P_Key.s, P_Value.l)
XOREncoded::XORE_WriteQuad(FileID.l, P_Key.s, P_Value.q)
XOREncoded::XORE_WriteInteger(FileID.l, P_Key.s, P_Value.i)
XOREncoded::XORE_WriteFloat(FileID.l, P_Key.s, P_Value.f)
XOREncoded::XORE_WriteDouble(FileID.l, P_Key.s, P_Value.d)
Resultat.s = XOREncoded::XORE_ReadString(FileID.l, P_Key.s)
Resultat.b = XOREncoded::XORE_ReadByte(FileID.l, P_Key.s)
Resultat.a = XOREncoded::XORE_ReadAsciiCharacter(FileID.l, P_Key.s)
Resultat.w = XOREncoded::XORE_ReadWord(FileID.l, P_Key.s)
Resultat.c = XOREncoded::XORE_ReadCharacter(FileID.l, P_Key.s)
Resultat.u = XOREncoded::XORE_ReadUnicodeCharacter(FileID.l, P_Key.s)
Resultat.l = XOREncoded::XORE_ReadLong(FileID.l, P_Key.s)
Resultat.q = XOREncoded::XORE_ReadQuad(FileID.l, P_Key.s)
Resultat.i = XOREncoded::XORE_ReadInteger(FileID.l, P_Key.s)
Resultat.f = XOREncoded::XORE_ReadFloat(FileID.l, P_Key.s)
Resultat.d = XOREncoded::XORE_ReadDouble(FileID.l, P_Key.s)

Comme le montre l'exemple ci-haut, il y a une commande pour chacun des types standard de PureBasic pour l'écriture et pour la lecture précédé par le préfixe XORE_. L'ordre des paramètres FileID et P_Key doit être tel que présenté ci-haut.