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

📄 s-p.cpp

📁 置换代换密码体制的S-P盒的发生器
💻 CPP
字号:
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<iomanip.h>


int S[16];
int P[16];

void generate_S1(){
	int mark[16];//srand(time(0));
	for(int i=0;i<16;i++)
		mark[i]=0;
	for(i=0;i<16;i++){
		int y=int ( double(rand()*15/32767) )%16;
		if(mark[y]!=0){
			do
			y=(y+1)%16;
			while(mark[y]!=0);
		}
		mark[y]=1;
		S[i]=y;
	}
    cout<<setw(2);
	for(i=0;i<16;i++)
	{
		if(S[i]>9)
		{
			switch(S[i])
			{ 
			    case 10: cout<<"A"<<setw(3);   break; 
				case 11: cout<<"B"<<setw(3);   break;
				case 12: cout<<"C"<<setw(3);   break;
				case 13: cout<<"D"<<setw(3);   break;
				case 14: cout<<"E"<<setw(3);   break;
				case 15: cout<<"F"<<setw(3);   break;
				default: break;
			}		
		}
	 else
		cout<<S[i]<<setw(3);
	}
	cout<<endl;
}


void generate_S2(){
	int mark[16];//srand(time(0));
	for(int i=0;i<16;i++)
		mark[i]=0;
	for(i=0;i<16;i++){
		int y=int ( double(rand()*15/32767) )%16;
		if(mark[y]!=0){
			do
			y=(y+1)%16;
			while(mark[y]!=0);
		}
		mark[y]=1;
		S[i]=y;
	}
	cout<<setw(2);
	for(i=0;i<16;i++)
	{
		if(S[i]>9)
		{
			switch(S[i])
			{ 
			    case 10: cout<<"A"<<setw(3);   break; 
				case 11: cout<<"B"<<setw(3);   break;
				case 12: cout<<"C"<<setw(3);   break;
				case 13: cout<<"D"<<setw(3);   break;
				case 14: cout<<"E"<<setw(3);   break;
				case 15: cout<<"F"<<setw(3);   break;
				default: break;
			}		
		}
	 else
		cout<<S[i]<<setw(3);
	}
	cout<<endl;
}



void generate_P1(){
	int mark[16];//srand(time(0));
	for(int i=0;i<16;i++)
		mark[i]=0;
	for(i=0;i<16;i++){
		int y=int ( double(rand()*15/32767) )%16;
		if(mark[y]!=0){
			do
			y=(y+1)%16;
			while(mark[y]!=0);
		}
		mark[y]=1;
		P[i]=y+1;
	}
	cout<<setw(2);
	for(i=0;i<16;i++)
		cout<<P[i]<<setw(3);
	cout<<endl;
}


void generate_P2(){
	int mark[16];//srand(time(0));
	for(int i=0;i<16;i++)
		mark[i]=0;
	for(i=0;i<16;i++){
		int y=int ( double(rand()*15/32767) )%16;
		if(mark[y]!=0){
			do
			y=(y+1)%16;
			while(mark[y]!=0);
		}
		mark[y]=1;
		P[i]=y+1;
	}
	cout<<setw(2);
	for(i=0;i<16;i++)
		cout<<P[i]<<setw(3);
	cout<<endl;
}


int choice;

void loop()
{
   cout<<"S盒和P盒:"<<"\n";
   cout<<"1.S盒:"<<"\n";
   cout<<"2.P盒:"<<"\n";
   cout<<"\n请选择你想进行的操作(1-2):";
   cin>>choice;
   cout<<"\n";
}


void main(){
	srand(time(0));

	int flag=1;
    while(flag)
	{
	  loop();
      switch(choice)
	  {
	    case 1:
              cout<<"S盒为:"<<"\n";
	          generate_S1();
	          generate_S2();
			  cout<<"\n退出请输入0,否则请输入其它整数:";
		      cin>>flag;
			  cout<<"\n";
			  break;
		case 2:
	          cout<<"P盒为:"<<"\n";
	          generate_P1();
	          generate_P2();
			  cout<<"\n退出请输入0,否则请输入其它整数:";
		      cin>>flag;
			  cout<<"\n";
			  break;
		default: flag=0; break;
	  }
	}
	cout<<"感谢你使用本程序,Byebye!\n\n"; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -