📄 des.h
字号:
store[i]=r[i];
expansion(p,r);
xor(p,k5,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第6次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k6,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第7次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k7,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第8次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k8,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第9次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k9,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第10次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k10,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第11次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k11,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第12次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k12,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第13次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k13,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第14次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k14,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第15次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k15,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第16次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k16,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
//////////////整合两部分
for(i=0;i<32;i++)
{
a[i]=r[i];
a[32+i]=l[i];
}
exchange_end(b,a); //逆初始换位
for(i=0;i<64;i++)
miwen[index*8+i]=b[i];
}
}
void DES_decryption(char mingwen[],int m[],char key[],int length)
{
int i,index;
int a[64],b[64],c[28],d[28],l[32],r[32],store[32],p[48],x[32],e[56],k1[48],k2[48],k3[48],k4[48],k5[48],k6[48],k7[48],k8[48],k9[48],k10[48],k11[48],k12[48],k13[48],k14[48],k15[48],k16[48];
char temp[9];
turntoB(b,key,8); //得到初始64比特密钥
selectC(c,b);
selectD(d,b);
/////////////////////////////////////取得K1
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k1);
/////////////////////////////////////取得K2
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k2);
/////////////////////////////////////取得K3
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k3);
/////////////////////////////////////取得K4
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k4);
/////////////////////////////////////取得K5
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k5);
/////////////////////////////////////取得K6
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k6);
/////////////////////////////////////取得K7
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k7);
/////////////////////////////////////取得K8
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k8);
/////////////////////////////////////取得K9
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k9);
/////////////////////////////////////取得K10
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k10);
/////////////////////////////////////取得K11
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k11);
/////////////////////////////////////取得K12
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k12);
/////////////////////////////////////取得K13
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k13);
/////////////////////////////////////取得K14
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k14);
/////////////////////////////////////取得K15
shift_left(c,28);
shift_left(d,28);
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k15);
/////////////////////////////////////取得K16
shift_left(c,28);
shift_left(d,28);
for(i=0;i<28;i++)
e[i]=c[i];
for(i=0;i<28;i++)
e[28+i]=d[i];
EtoK(e,k16);
/////////////////////密钥处理完毕
///////////////////////明文处理阶段
for(index=0;index<512;index+=64) //将明文分块
{
for(i=0;i<64;i++)
b[i]=m[index+i];
exchange_start(a,b); //初始换位
for(i=0;i<32;i++) //得到L和R
{
l[i]=a[i];
r[i]=a[32+i];
}
/////////////////第1次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k16,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第2次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k15,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第3次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k14,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第4次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k13,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第5次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k12,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第6次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k11,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第7次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k10,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第8次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k9,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第9次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k8,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第10次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k7,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第11次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k6,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第12次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k5,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第13次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k4,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第14次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k3,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第15次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k2,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
/////////////////第16次运算
for(i=0;i<32;i++)
store[i]=r[i];
expansion(p,r);
xor(p,k1,48);
table(x,p);
P(x);
xor(x,l,32);
for(i=0;i<32;i++)
r[i]=x[i];
for(i=0;i<32;i++)
l[i]=store[i];
//////////////整合两部分
for(i=0;i<32;i++)
{
a[i]=r[i];
a[32+i]=l[i];
}
exchange_end(b,a); //逆初始换位
turntoCH(temp,b,8);
for(i=0;i<8;i++)
mingwen[index/8+i]=temp[i];
}
mingwen[length]='\0';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -