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

📄 mima.cpp

📁 这是我的一个密码作业代码
💻 CPP
字号:
#include"stdio.h"
#include"iostream.h"
#include <stdlib.h>
#include  <time.h>
#include <math.h>
#include<fstream.h>
#define N 8
int S[16]={0xE,0x4,0xD,0x1,0x2,0xF,0xB,0x8,0x3,0xA,0x6,0xC,0x5,0x9,0x0,0x7};
int P[8]={5,2,6,8,3,7,4,1};

char  BoxP(char in)
{
	char result=0,i;	
	for(i=1;i<=8;i++)
		result+=((in>>(8-i))&0x1)*(int)pow(2,8-P[i-1]);
	return result;
}
char Xor(char key,char in)
{
	return key^in;
}


void   ZhuanHuan(int X,int* arr)   
{   
	int i;   
	for(i =1;i<=N;i++){   
		if((1<<(N-i))&X) arr[N-i]=1;   
		else   arr[N-i]=0;   
	}   
}   

int  combin(int left,int right)
{
	int i;
//	for(i=0;i<N/2;i++)
		right+=(left<<4)&0xF0;
	return right;
}
int bi(char in,char flag)
{
	if(flag=='l')
		return (in>>4)&0xF;
	if(flag=='r')
		return in&0xF;
}



void main()
{
	
	unsigned char p,c,u,v,w,key[4]={0};
	
    int s1,s2,i,j,out,inip;
	unsigned int times=0,mintimes=65535,po[256]={0},T[256]={0},maxtimes=0;
	time_t t;
	srand((unsigned) time(&t));
	//	inip=p=rand()%256;
	int tt=rand();
	int rr=rand();
	int ww=rand();
	long k=(tt*rr+ww)%0xFFFFF;
	long result[256]={0};
	long ntimes=0;
	ofstream of("d:\\result.txt",ios::nocreate);
	
	for(ntimes=0;ntimes<1000;ntimes++)
	{
		tt=rand();
		 rr=rand();
		 ww=rand();
		 k=(tt*rr+ww)%0xFFFFF;
	//	 cout<<k<<endl;
	//	 cout<<"************************************"<<endl;
		for(i=0;i<256;i++)
		{
			po[i]=0;
			T[i]=0;
		}


		for(inip=0;inip<256;inip++)
		{
			p=inip;
			times=0;
			while(c!=inip)
			{
				key[0]=(k>>12)&0xFF;
				key[1]=(k>>8)&0xFF;
				key[2]=(k>>4)&0xFF;
				key[3]=k&0xFF;
				for(i=0;i<2;i++)
				{
					u=Xor(key[i],p);
					s1=bi(u,'l');
					s2=bi(u,'r');
					s1=S[s1];
					s2=S[s2];
					v=combin(s1,s2);
					w=BoxP(v);
					p=w;
				}
				u=Xor(key[i],p);
				s1=bi(u,'l');
				s2=bi(u,'r');
				s1=S[s1];
				s2=S[s2];
				v=combin(s1,s2);
				c=(unsigned)Xor(key[3],v);
				
				p=c;
				times++;
				out=c;
				//				cout<<(int)p<<"    "<<(int)c<<endl;
			}
			po[inip]=times;
			
//			if(maxtimes<times)
	//			maxtimes=times;
//			cout<<(int)inip<<':'<<(int)p<<"    "<<(int)c<<endl;
//			cout<<times<<endl;
//			cout<<"*********************************************"<<endl;
		}
		//	cout<<maxtimes<<endl;
//		cout<<"加密密钥为"<<hex<<k<<endl;
		for(i=0;i<256;i++)
			T[po[i]]++;
		for(i=0;i<256;i++)
			if(T[i]!=0)
			result[T[i]]++;
	//		cout<<dec<<i<<':'<<T[i]<<endl;
	}
float qw=0;
for(i=0;i<256;i++)
{
	cout<<dec<<i<<':'<<result[i]<<endl;
	of<<result[i]<<endl;
//	qw+=result[i]*i;


}
for(i=0;i<30;i++)
qw+=i*result[i]/1000;
cout<<qw/256<<endl;	
}

⌨️ 快捷键说明

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