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

📄 kaiser.h

📁 des演示算法c++实现
💻 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 + -