资源简介
实现简单四轮的对称分组密码加密,并对其进行线性及差分攻击
代码片段和文件信息
#include “DESEncryptionHeader.h“
//运用密钥K对明文二元串x加密成y
void DES_Encrypt(char* xchar* Kchar* &ybool new_flag)
{
if(strlen(x)!=L*M||strlen(K)!=L*M+Nr*L) return;
if(new_flag) y=(char*)malloc(sizeof(char)*(L*M+1));
char* w;
char* u;
char* v;
char* k;
w=bits2string(x);
for(int r=1;r {
k=getKey(Kr);//密钥
u=getU(wk);//异或
v=getV(u);//S盒
w=getW(v);//P盒
}
k=getKey(KNr);//密钥
u=getU(wk);//异或
v=getV(u);//S盒
//P盒省略,w=v
k=getKey(KNr+1);//密钥
y=getU(vk);//异或
}
//二元串转化为可按位运算的string
//此例中输入长度16,输出长度4
char* bits2string(char* x)
{
char *result=(char*)malloc(sizeof(char)*(M+1));
//为返回结果分配空间
for(int i=0;i {
int sum=0;
for(int j=0;j {
int a=x[i+j]-‘0‘;
sum=sum*2+a;
}
result[i/L]=sum+‘0‘;
}
result[M]=‘\0‘;
return result;
}
//string转化为二元串
//输入长度为4,输出长度为16
char* string2bits(char* v)
{
char *result=(char*)malloc(sizeof(char)*(L*M+1));
//为返回结果分配空间
for(int i=0;i {
int a=v[i]-‘0‘;
for(int j=0;j {
result[L-1-j+L*i]=a%2+‘0‘;
a=a/2;
}
}
result[L*M]=‘\0‘;
return result;
}
//由输入的关于密钥的字符串获得第i轮的密钥
char* getKey(char* Kint i)
{
if(strlen(K)!=L*M+L*Nr||K==NULL) return NULL;
char *result=(char*)malloc(sizeof(char)*(M+1));
//为返回结果分配空间
for(int j=(i-1)*L;j {
int sum=0;
for(int k=0;k<4;k++)
{
int a=K[j+k]-‘0‘;
sum=sum*2+a;
}
result[(j-(i-1)*L)/L]=sum+‘0‘;
}
result[M]=‘\0‘;
return result;
}
//w与密钥异或
char* getU(char* wchar* k)
{
if(strlen(k)!=L||strlen(w)!=L||k==NULL||w==NULL) return NULL;
char *result=(char*)malloc(sizeof(char)*(M+1));
//为返回结果分配空间
for(int i=0;i {
int W=w[i]-‘0‘;
int K=k[i]-‘0‘;
result[i]=W^K+‘0‘;
}
result[M]=‘\0‘;
return result;
}
//S盒代换
char* getV(char* u)
{
if(strlen(u)!=L||u==NULL) return NULL;
char *result=(char*)malloc(sizeof(char)*(M+1));
//为返回结果分配空间
for(int i=0;i {
int U=u[i]-‘0‘;
result[i]=S[U]+‘0‘;
}
result[M]=‘\0‘;
return result;
}
//P盒置换
char* getW(char* v)
{
if(strlen(v)!=L||v==NULL) return NULL;
char* s=string2bits(v);
char* sp=(char*)malloc(sizeof(char)*(M*L+1));
for(int i=0;i {
sp[P[i]-1]=s[i];
}
sp[L*M]=‘\0‘;
return bits2string(sp);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 52736 2012-11-05 16:24 DES_Simulation\Debug\DES_Simulation.exe
文件 356336 2012-11-05 16:24 DES_Simulation\Debug\DES_Simulation.ilk
文件 502784 2012-11-05 16:24 DES_Simulation\Debug\DES_Simulation.pdb
文件 3232 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\cl.command.1.tlog
文件 71434 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\CL.read.1.tlog
文件 9310 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\CL.write.1.tlog
文件 30265 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\DESEncryptionHeader.obj
文件 22271 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\DESHeader.obj
文件 381 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\DES_Simulation.exe.intermediate.manifest
文件 63 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\DES_Simulation.lastbuildstate
文件 12657 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\DES_Simulation.log
文件 32559 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\DifferentialAttackHeader.obj
文件 33531 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\LinerApproximationHeader.obj
文件 3438 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\li
文件 3938 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\li
文件 1356 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\li
文件 62471 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\main.obj
文件 516 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\mt.command.1.tlog
文件 902 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\mt.read.1.tlog
文件 326 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\mt.write.1.tlog
文件 527360 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\vc100.idb
文件 118784 2012-11-05 16:24 DES_Simulation\DES_Simulation\Debug\vc100.pdb
文件 2508 2012-10-28 00:08 DES_Simulation\DES_Simulation\DESEncryptionHeader.cpp
文件 363 2012-10-25 12:16 DES_Simulation\DES_Simulation\DESEncryptionHeader.h
文件 540 2012-10-27 14:20 DES_Simulation\DES_Simulation\DESHeader.cpp
文件 392 2012-11-05 16:24 DES_Simulation\DES_Simulation\DESHeader.h
文件 3675 2012-10-27 14:09 DES_Simulation\DES_Simulation\DES_Simulation.vcxproj
文件 1789 2012-10-27 14:09 DES_Simulation\DES_Simulation\DES_Simulation.vcxproj.filters
文件 143 2012-10-24 01:42 DES_Simulation\DES_Simulation\DES_Simulation.vcxproj.user
文件 2520 2012-10-28 00:25 DES_Simulation\DES_Simulation\DifferentialAttackHeader.cpp
............此处省略17个文件信息
评论
共有 条评论