⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 replace.h

📁 des演示算法c++实现
💻 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字节密钥(字母不能重复):" <<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';
        cout << "加密已完成:" <<endl;
        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 + -