📄 t7.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 + -