| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 
 |  
char alphabet[26]={'A','B'}//à Z
 
TPolyAlphabetique::TPolyAlphabetique(){
textclair=new char[255];textcrypte=new char[255];
chainecle=new char[255];cle=new char[255];
}
 
TPolyAlphabetique::~TPolyAlphabetique(){
delete textclair;delete textcrypte;delete chainecle;delete cle;
delete[] abaque;
}
 
void TPolyAlphabetique::fillAbaque(){
int i,j;
for(i=0;i<26;i++)
	for(j=0;j<26;j++) abaque[i][j]=alphabet[(j+i)%26];
//en effet, le dcalage de chaque ligne se fait 
 chaque i
//pas de -1 comme en JulesCesar car k=4 => commence par E ici
}
 
char TPolyAlphabetique::correspond(char clair,char cle){
int i,j;char brou;
for(j=0;j<26;j++){
	if(clair==abaque[0][j]) break;
}
for(i=0;i<26;i++){
	if(cle==abaque[i][0]) break;
}
brou=abaque[i][j];
return(brou);
}
 
char TPolyAlphabetique::correspond2(char cle,char crypt){
int i,j;char brou;
for(i=0;i<26;i++){
	if(cle==abaque[0][i]) break;
}
for(j=0;j<26;j++){
	if(crypt==abaque[j][i]) break;
}
brou=abaque[j][0];
return(brou);
}
 
void TPolyAlphabetique::crypter(){
//buildstrkey();
int L=strlen(textclair);char c;char * res=new char[255];
for(int i=0;i<L;i++){
	c=correspond(textclair[i],chainecle[i]);
	res[i]=c;
}
res[L]=0;strcpy(textcrypte,res);
}
 
void TPolyAlphabetique::decrypter(){
//buildstrkey();
int L=strlen(textcrypte);char c;char * res=new char[255];
for(int i=0;i<L;i++){
	c=correspond2(chainecle[i],textcrypte[i]);
	res[i]=c;
}
res[L]=0;strcpy(textclair,res);
}
 
void TPolyAlphabetique::buildstrkey(){
int lk=strlen(cle);int ltxt;char * tmp=new char[50];
chainecle="";
if (strlen(textclair)>strlen(textcrypte)) ltxt=strlen(textclair);
	else ltxt=strlen(textcrypte);
int d=ltxt/lk;int m=ltxt%lk;
for(int i=0;i<d;i++) strcat(chainecle,cle);
if(m>0) strncpy(tmp,cle,m);
strcat(chainecle,tmp);
chainecle[ltxt]=0;//finir chainecle par le kre nul
} | 
Partager