?? replace.h
字號:
#include <iostream.h>
#include <string.h>
#include <limits.h>
class Replace
{
protected:
int K[8]; ///zhuyi leixing
char M[SHRT_MAX];
char C[SHRT_MAX];
public:
Replace();
void encrypt( char R[]);
void decrypt( char R[]);
void getkey();
};
Replace::Replace()
{
K[0]=M[0]=C[0]='\0';
};
void Replace::getkey()
{
char k[9];
char S[9];
cout << "請輸入8字節(jié)密鑰(字母不能重復):" <<endl;
cin >>k; //cout<< k[0];
k[strlen(k)]='\0';
strcpy(S,k);
///////////////////////////////////////////////////////////////////////////
int inserter,index;
for( int i=1; i<8;i++) //notice 8
{
inserter=S[i];
index=i-1;
while(index>=0&&inserter<S[index])
{
S[index+1]=S[index];
index--;
}
S[index+1]=inserter;
}
for (int m=0;m<8;m++)
{
for(int j=0; j<8; j++)
if (char(k[m])==char(S[j]))
K[m]=j;
}
//////////////////////////////////////////////////////////////// paixu
};
void Replace::encrypt(char R[])
{
getkey();
int len,rep,w,t,g;
strcpy(M,R);
len=strlen(M);
rep=8-len%8; //tiancongliang
if(rep==8)
rep=0;
M[len+rep]='\0';
for( w=0;w<rep;w++)
M[len+w]=' ';
t=0;
do{
C[t]=M[t-(t%8)+K[t%8]];
t++;
}while(t!=len+rep);
C[t]='\0';
for (g=0;g<(len+rep);g++)
cout <<C[g];
cout <<endl;
};
void Replace::decrypt(char R[])
{
getkey();
int len,t,g;//i;
strcpy(C,R);
t=0;
len=strlen(C);
do
{
M[t-t%8+K[t%8]]=C[t];
t++;
}while(t!=len);
M[len+1]='\0';
cout <<"解密已完成:" <<endl;
for (g=0;g<len;g++)
cout <<char (M[g]);
cout <<endl;
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -