📄 kaiser.h
字号:
#include <iostream.h>
#include <math.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
class Kaiser
{
public:
Kaiser();
void encrypt(char R[]); //加密函数
void decrypt(char R[]); //解密函数
void getkey();
protected:
int K; //密钥
char M[SHRT_MAX]; //明文
char C[SHRT_MAX]; //密文
};
Kaiser::Kaiser()
{
M[0]='\0';
C[0]='\0';
}
void Kaiser::getkey()
{
char v;
cout << "请输入密钥(任意字母,忽略大小写):" << endl ;
cin >> v ;
if (int(v)>96)
K=v-96;
else
K=v-64;
}
void Kaiser::encrypt( char R[])
{
getkey();
int i,len;
len=strlen(R)+1;
char S[SHRT_MAX];
for ( i=0; i<len ;i++)
{
S[i]=R[i];
if ( S[i]!='\0' )
{
if (int(S[i])>96)
{
S[i]=S[i]-96;
if((S[i]+K)%26==0)
C[i]=char(122);
else
C[i]=char(96+(S[i]+K)%26);
}
else
{ S[i]=S[i]-64;
if((S[i]+K)%26==0)
C[i]=char(122);
else
C[i]=char(64+(S[i]+K)%26);
}
}
else
{
for(int n=0 ;n<i ;n++)
cout<< C[n];
cout<< endl;
}
}
}
void Kaiser::decrypt( char R[])
{
getkey();
int j,lenth;
lenth=strlen(R)+1;
char S[SHRT_MAX];
for (j=0;j<lenth;j++)
{
S[j]=R[j];
if (S[j]!='\0')
{
if (int(S[j])>96)
{
if(((S[j]-96-K)%26)<=0)
M[j]=char((S[j]-96-K)%26+122);
else
M[j]=char((S[j]-96-K)%26+96);
}
else
{
if(((S[j]-64-K)%26)<=0)
M[j]=char((S[j]-64-K)%26+90);
else
M[j]=char((S[j]-64-K)%26+64);
}
}
else
{
int m;
for(m=0 ;m<j ;m++)
cout<< M[m];
cout<< endl;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -