📄 kasiski测试.cpp
字号:
#include <iostream.h>
#include <string.h>
char table[]="abcdefghijklmnopqrstuvwxyz";
char VigeTable[26][26]={'0'};
char CipherText[26]={'0'};
char key[]="toy";
char allkey[100]={'0'};
void InitTable(int linenum, int offset)
{
for(int k=0;k<26;k++)
VigeTable[linenum][k]=table[(k+offset)%26];
}
void InitKey(int Length,char allkey[])
{
for(int m=0;m<Length;m++)
{
allkey[m]=key[m%3];
}
}
int GetLineNum(char c)
{
for(int i=0;i<26;i++)
{
if(table[i]==c)
return i;
else continue;
}
return -1;
}
int GetPaintextCNum(int LineNum,char c)
{
for(int j=0;j<26;j++)
{
if(VigeTable[LineNum][j]==c)
return j;
else continue;
}
return -1;
}
void GetPlainText(char CipherText[],int L)
{
int cnum,Lnum;
for(int p=0;p<L;p++)
{
Lnum=GetLineNum(allkey[p]);
cnum=GetPaintextCNum(Lnum,CipherText[p]);
cout<<table[cnum];
}
cout<<endl;
}
main()
{
int L1,L2,i;
cout<<"CipherText: ";
cin>>CipherText;
L1=strlen(CipherText);
L2=strlen(table);
for(int t=0;t<L2;t++)
{
InitTable(t,t);
}
InitKey(L1,allkey);
cout<<"Key :";
for(int n=0;n<L1;n++)
{
cout<<allkey[n];
}
cout<<endl;
cout<<"PlainText :";
GetPlainText(CipherText,L1);
cout<<"CipherText: ";
for(int s=0;s<L1;s++)
{
cout<<CipherText[s];
}
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -