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

📄 hpc.cpp

📁 同学的毕业设计。基于Hpc密码的选择重传协议的数据传输。希望能供大家参考。谢谢 !
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		Length=strin.GetLength();
	}

	for(i=0;i<Length;i++)
	{
	ch[i]=strin.GetAt(i);
	}
	ch[i+1]='\0';

	i=0;
	for(i=0;i<(l1/16);i++)
	{
		
		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		encrypt(ul,ul1);
		//temp[0]=ul1[0];temp[1]=ul1[1];temp[2]=ul1[2];temp[3]=ul1[3];
		//decrypt(temp,ul1);
		
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		
		
	}
	
	u4byte a=0xffffffff;
	switch((l-1)/4)
	{
			u4byte b;
		//int n;
	case 0:

		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		ul[3]=ul[2]=ul[1]=0;
		a=a<<(32-l*8);
		b=ul[0];
		b = b&a;
		ul[0]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	case 1:
	
		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		ul[3]=ul[2]=0;
		
		
		a=a<<(32-(l%4)*8);
		b=ul[1];
		b = b&a;
		ul[1]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	case 2:
	
		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		ul[3]=0;
		
		a=a<<(32-(l%4)*8);
		b=ul[2];
		b = b&a;
		ul[2]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	case 3:

		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		
		a=a<<(32-(l%4)*8);
		b=ul[3];
		b = b&a;
		ul[3]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	}
}

void HPC::jiemi(CString strin, CString &strout)
{
	u4byte ul[4],ul1[4];
	char ch[16],ch1[17];
	while (!strin.IsEmpty())
	{
		ul[0] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);
		ul[1] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);
		ul[2] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);
		ul[3] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);

		decrypt(ul,ul1);

		ultoch(ul1,ch1);
		ch1[16]='\0';
		strout += ch1;
		//strout +=ul1;
		//strout +='\0';
	}
}

void HPC::filejiemi(CString strin, CString &strout)
{
	u4byte ul[4],ul1[4];
	char ch[16],ch1[17];
	while (!strin.IsEmpty())
	{
		ul[0] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);
		ul[1] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);
		ul[2] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);
		ul[3] = strtoul(strin.Left(8),NULL,16);
		strin = strin.Mid(8);

		decrypt(ul,ul1);

		ultoch(ul1,ch1);
		ch1[16]='\0';
		strout += ch1;
	}
}

void HPC::fileJiami(CString strin, CString &strout)
{
int Length,i,j,l,l1;
	char ch[2000],out[2000];
	char ch1[16],ch2[16];
	u4byte ul[4],ul1[4],temp[4];
	
	Length = l1 = strin.GetLength();
	l = Length%16;
	
	while((Length%16)!=0)
	{
		strin +='0';
		Length=strin.GetLength();
	}

	for(i=0;i<Length;i++)
	{
	ch[i]=strin.GetAt(i);
	}
	ch[i+1]='\0';

	i=0;
	for(i=0;i<(l1/16);i++)
	{
		
		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		encrypt(ul,ul1);
		//temp[0]=ul1[0];temp[1]=ul1[1];temp[2]=ul1[2];temp[3]=ul1[3];
		//decrypt(temp,ul1);
		
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		
		
	}
	
	u4byte a=0xffffffff;
	switch((l-1)/4)
	{
			u4byte b;
		//int n;
	case 0:

		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		ul[3]=ul[2]=ul[1]=0;
		a=a<<(32-l*8);
		b=ul[0];
		b = b&a;
		ul[0]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	case 1:
	
		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		ul[3]=ul[2]=0;
		
		
		a=a<<(32-(l%4)*8);
		b=ul[1];
		b = b&a;
		ul[1]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	case 2:
	
		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		ul[3]=0;
		
		a=a<<(32-(l%4)*8);
		b=ul[2];
		b = b&a;
		ul[2]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	case 3:

		for(j=0;j<16;j++)
		{
		ch1[j]=ch[i*16+j];
		}
		chtoul(ch1,ul);
		
		a=a<<(32-(l%4)*8);
		b=ul[3];
		b = b&a;
		ul[3]=b;
		encrypt(ul,ul1);
		for(j=0;j<4;j++)
		{
			char str[9];
			//out[i*16+j] = ch2[j];
			//str +=ch2[j];
			sprintf(str,"%08x",ul1[j]);
		//	str[j]=ch2[j];
			str[8]='\0';
			strout +=str;
		}
		break;
	}
}

⌨️ 快捷键说明

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