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

📄 t7.txt

📁 DES加密程序
💻 TXT
字号:
//执行下一轮操作,整体执行,就是使用前面几个函数,来进行整轮加密
void CDESEncrptionDlg::OnnextRound() 
{
	if(m_InputVar=="")
	{
		MessageBox("请填好原文","warn",4);
	}
	else if(m_OutputVar=="")
	{
		MessageBox("请填好密钥","warn",4);
	}
	else
	{
		
		if(DESRound==1)
		{
			m_ResultEdit="";
			UpdateData(false);
			bool b64[64];
			bool b64dup1[64];
			DecimalToBinary(m_InputVar,b64,64);    //temp64 is the 0,1 representation of input
			Transfer(ip,b64,b64dup1,64);

			for(int i=0;i<32;i++)
			{
				bLold[i]=b64dup1[i];
			}
			for(i=0;i<32;i++)
			{
				bRold[i]=b64dup1[i+32];
			}
			m_Lold=BtoS(bLold,32);
			m_Rold=BtoS(bRold,32);
			
			UpdateData(false);
			
		
		}
		else
		{
			m_Rold=m_Rnew;
			m_Lold=m_Lnew;
			for(int i=0;i<32;i++)
			{
				bLold[i]=bLnew[i];
				bRold[i]=bRnew[i];
			}
			
			m_Lnew="";m_Rnew="";
			m_Round.Format("%d",DESRound);
			UpdateData(false);
		}

		if(DESRound==1)
		{
		
			bool b64[64];
			
			CString key=m_OutputVar;
			DecimalToBinary(key,b64,64);
			Transfer(PC1,b64,b64dup,56);
			LeftMove(b64dup,iter[DESRound-1][1]);
			m_C=""; m_D="";
			for(int i=0;i<28;i++)
			{
				if(b64dup[i]==0)
					m_C+="0";
				else
					m_C+="1";
				if(b64dup[i+28]==0)
					m_D+="0";
				else
					m_D+="1";
				bCD[i]=b64dup[i];
				bCD[i+28]=b64dup[i+28];
			}
			UpdateData(false);
		}
		else
		{
			LeftMove(b64dup,iter[DESRound-1][1]);
			m_C=""; m_D="";
			for(int i=0;i<28;i++)
			{
				if(b64dup[i]==0)
					m_C+="0";
				else
					m_C+="1";
				if(b64dup[i+28]==0)
					m_D+="0";
				else
					m_D+="1";
				bCD[i]=b64dup[i];
				bCD[i+28]=b64dup[i+28];
			}
			UpdateData(false);
		}
      
		Transfer(PC2,bCD,bK,48);                 //得到K1
		m_K=BtoS(bK,48);
		UpdateData(false);

		Transfer(E,bRold,bER,48);                 //从R0得到E(R)
		m_ER=BtoS(bER,48);
		UpdateData(false);

		xor48(bK,bER,bXOR,48);                   //得到K1 xor E(R)
		m_XOR=BtoS(bXOR,48);
		UpdateData(false);

		sixTofour(bXOR,bS);                      //六变四
		m_S=BtoS(bS,32);
		UpdateData(false);

		Transfer(P,bS,bF,32);                    //得到F(R,K)的值
		m_F=BtoS(bF,32);
		UpdateData(false);
		

		xor48(bLold,bF,bRnew,32);               //得到R1
		for(int i=0;i<32;i++)
		{
			bLnew[i]=bRold[i];
		}
		m_Lnew=BtoS(bLnew,32);                 //得到L1
		m_Rnew=BtoS(bRnew,32);
		UpdateData(false);
		
		DESRound++;
		CString cstring;
		CString head;
		cstring.Format("%d",(DESRound-1));
		head="R";
		head+=cstring;
		ROsign.SetWindowText(head);
		head.SetAt(0,'L');
		LOsign.SetWindowText(head);

		cstring.Format("%d",(DESRound));
		head="C";
		head+=cstring;
		Csign.SetWindowText(head);
		head.SetAt(0,'D');
		Dsign.SetWindowText(head);
		head.SetAt(0,'K');
		Ksign.SetWindowText(head);
		head.SetAt(0,'L');
		LNsign.SetWindowText(head);
		head.SetAt(0,'R');
		RNsign.SetWindowText(head);
		
		ShowText();
		if(DESRound==17)
		{
			bool re[64];
			getResult(bRnew,bLnew,re);
			CString result=BtoS(re,64);
			MessageBox(result,"加密结果",1);
			m_ResultEdit+="THE FINALL RESULT IS:";
			m_ResultEdit+=result;
			m_ResultEdit+="\r\n";
			m_finalResult=result;
			UpdateData(false);
			DESRound=1;
			
		}
	}
}

⌨️ 快捷键说明

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