#include
#include
void main()
{ char tmpc;
int count;
int len;
unsigned __int64 k[4];
unsigned __int64 tmpi;
unsigned __int64 tmpl;
unsigned __int64 Cn;
unsigned __int64 Nn;
unsigned __int64 pc;
unsigned __int64 ps1;
unsigned __int64 ps2;
unsigned __int64 pa;
unsigned __int64 pb;
unsigned __int64 pd;
unsigned __int64 kk[4];
unsigned__int64ksave[4]={0x0123456789abcdef,0x0123456789abcdef,0x0123456
789abcdef,0x0123456789abcdef};
int x = sizeof(long); //定义变量和数组用于计算和储存
printf("please input the len.\n");//输入文件长度
scanf("%d",&len);
scanf("%c", &tmpc);
count=(len+15)/16+pass;
printf("len is %d\n",len); //显示输入的信息和提示输入密钥
printf("count is %d\n",count);
printf("please input the k.\n");
for(int kcount=0;kcount='0' && tmpc='a' && tmpc='A' && tmpc>4;//计算pc,表示母体1 与母体2 杂交的位置
pa=pa&15;
pc=pa+25;
pa=k[1]>>8;//计算ps1,表示母体1 变异的位置
pa=pa&63;
ps1=pa+1;
pa=k[1]>>14;//计算ps2,表示母体2 变异的位置
pa=pa&63;
ps2=pa+1;
if(Nn==8||Nn==12)//母体1 取反
k[0]=~k[0];
if(Nn==4||Nn==12)//母体2 取反
k[1]=~k[1];
k[0]=k[0]>>Cn;//母体1 与母体2 分别右移Cn 位
k[1]=k[1]>>Cn;
pa=k[0]>>(64-pc);//母体1 与母体2 在点pc 进行杂交,得到新个体母体1,
母体2
pa=pa>pc;
pd=pa+pb;
pa=k[1]>>(64-pc);
pa=pa>pc;
k[0]=pd;
k[1]=pa+pb;
pa=k[0];//母体1 在ps1 出产生变异
pa=(pa>>(64-ps1)&1)>ps1;
k[0]=pa+pb;
pa=k[1];//母体2 在ps2 出产生变异
pa=(pa>>(64-ps2)&1)>ps2;
k[1]=pa+pb;
if(j==1)//连接母体1 和母体2,构成一个l28 位的二进制数组kk;
{ kk[0]=k[0];
kk[1]=k[1];
}
else
{ kk[2]=k[0];
kk[3]=k[3];
}
k[0]=k[3];//将母体3 和母体4 用于计算
k[1]=k[2];
}
k[0]=kk[0]^kk[2];
k[1]=kk[2]^kk[3];
if(count>pass)
for(int m=0;m>32;
printf("%x",pa);
}
ksave[0]=k[0]^kk[0]+kk[1];
ksave[1]=k[1]^kk[2]+kk[3];
}
getchar();
getchar();
}
编译错误 求改错!
|