資源簡介
實現(xiàn)簡單四輪的對稱分組密碼加密,并對其進行線性及差分攻擊
代碼片段和文件信息
#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個文件信息
評論
共有 條評論