资源简介

实现简单四轮的对称分组密码加密,并对其进行线性及差分攻击

资源截图

代码片段和文件信息

#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\link.command.1.tlog

     文件       3938  2012-11-05 16:24  DES_Simulation\DES_Simulation\Debug\link.read.1.tlog

     文件       1356  2012-11-05 16:24  DES_Simulation\DES_Simulation\Debug\link.write.1.tlog

     文件      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个文件信息

评论

共有 条评论

相关资源