Prog de cryptage de message par CRC8, la prise en charge de fchier n'est pas faite, mais bon ce n'est pas dur à modifier.
Source / Exemple :
/***************************************************
Cryptage de données grâce à CRC8
Par Thomas Poulichet
Créer le 12/02/2003 à 23:03
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int CRC(int);
void main (void)
{
char *password={""}, *crypt={""};
char * message={""};
int masqueprecedent;
int ValeurCRC=0;
int longueurmessage,longueurpassword,i=0,k=0;
puts("Entrer votre message");
gets(message);
puts("Entrer le mot de passe !");
gets (password); //Sasie mot de passe
longueurmessage=strlen(message); //Longueur de chaîne
longueurpassword=strlen(password); //Longueur de chaîne
masqueprecedent=0;
for (i=0;i<longueurmessage;i++)
{
ValeurCRC=CRC(masqueprecedent); //Récupére la valeur de CRC8
masqueprecedent = ValeurCRC ^ *(password+k); //Cryptage par Ou Exclusif
- (crypt+i) = masqueprecedent ^ *(message+i);
k=k+1;
if (k>=longueurpassword)
{
k=0;
}
}
for (i=0;i<longueurmessage;i++)
{
printf("%X\t",*(crypt+i));
}
printf("\n");
}
/*Distribue la valeur du masque*/
int CRC(int valeurMasqueprecedent)
{
int ValeurCRC[16][16]={0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D,
0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D,
0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCB,
0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD,
0xC7,0xC0,0xC9,0xCE,0xDB,0xDC,0xD5,0xD2,0xFF,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA,
0xB7,0xB0,0xB9,0xBE,0xAB,0xAC,0xA5,0xA2,0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A,
0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,0x1F,0x18,0x11,0x16,0x03,0x04,0x0D,0x0A,
0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,0x6F,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A,
0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,0xB1,0xB6,0xBF,0xB8,0xAD,0xAA,0xA3,0xA4,
0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4,
0x69,0x6E,0x67,0x60,0x75,0x72,0x7B,0x7C,0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44,
0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x0C,0x21,0x26,0x2F,0x28,0x3D,0x3A,0x33,0x34,
0x4E,0x49,0x40,0x47,0x52,0x55,0x5C,0x5B,0x76,0x71,0x78,0x7F,0x6A,0x6D,0x64,0x63,
0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,0x13,
0xAE,0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83,
0xDE,0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0xF3};
int ligne=0,colonne=0;
int ReturnCRC=0;
if (valeurMasqueprecedent==0)
{
ReturnCRC=ValeurCRC[0][0];
}
else
{
ligne=(valeurMasqueprecedent/0x10); //Calcul de la ligne
colonne=(valeurMasqueprecedent-(0x10*ligne)); //Calcul de la colonne
ReturnCRC=ValeurCRC[ligne][colonne]; //Donne la valeur du tableau CRC8
}
return(ReturnCRC); //Retourne cette valeur au Main
}
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.