自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (8)
  • 收藏
  • 关注

空空如也

跳步序列密码设计

跳步序列密码设计!跳步-LFSR的设计理论

2013-07-23

MillerRabin素性检验

nt MillerRabin(unsigned char Odd[],unsigned char Random[],int s,unsigned char Mp[]){//MillerRabin素性检验//OK unsigned char A[M],B[M]; int t,i; PowerFunction(Random,Mp,Odd,A); t=Judgment1(A); if(t){ printf("Odd可能是素数!\n"); return 1; }//if for(i=0;i<s;i++){ t=Judgment_1(A,Odd); if(t==-1){ printf("Odd可能是素数!\n"); return 1; }//if MultiplyofLargeNumber2(A,A,B); ModOperator(B,Odd,A); }//for printf("Odd是复和数!\n"); return 0; }//MillerRabin

2013-01-21

AES 源代码

nt FileOut( const void *strOut, int len, const char *strFile ) { FILE *fp = NULL; int iWrite=0; if( strOut == NULL || len ==0 ) goto out; //! 打开文件句柄 if( (fp = fopen&#40; strFile,"wb" &#41;) == NULL ) // 二进制写 goto out; iWrite = fwrite( strOut, 1, len, fp ); fclose(fp); out: return iWrite; } /******************************************************************************/ // 名称:CheckParse // 功能:校验应用程序入口参数 // 参数:argc等于main主函数argc参数,argv指向main主函数argv参数 // 返回:若参数合法返回true,否则返回false // 备注:简单的入口参数校验 /******************************************************************************/ bool CheckParse( int argc, char** argv ) { if( (argc != 4) || (argv[1][1]!='e' && argv[1][1]!='d') || (strlen( argv[3] ) >(128/8) ) ) { Usage( argv[0] ); return false; } return true; } //! 程序主函数(Use MFC in a Shared DLL) int main( int argc, char **argv ) { //! 在此处填写代码...... return 0; }

2013-01-21

隐式或明式输入密码

//by史瑞 //隐式或明式输入密码 #include #include #include //#define PROCALIM OK typedef struct KeyNode { char ch; struct KeyNode *next; }; #define LEN sizeof(struct KeyNode) struct KeyNode *CreatKeyNode() { struct KeyNode *head; head=(struct KeyNode *)malloc(LEN); #ifndef PROCALIM head->ch=getch(); printf("*"); #else head->ch=getchar(); #endif head->next=NULL; return head; }

2013-01-21

对偶反馈移位寄存器DSR

//by史瑞 //进动一拍输出一个字节ok unsigned char DSR_MoveWord(unsigned char *Const,unsigned char *Array,unsigned long num){ int i,t; unsigned char ch,Output=0x00; for(i=0;i<8;i++){ ch=(*Array)&0x80; t=ch?1:0; ch>>=i; Output^=ch; LeftShift(Array,Dig(num)); if(t) XorDSR(Array,Const,Dig(num)); } return Output; }

2013-01-21

随即全排列生成器

//by史瑞 #include<stdlib.h>//srand()、rand() #include<time.h>//time(); #include<conio.h> #include<stdio.h> swap(unsigned char *pm,unsigned char *pn){ unsigned char temp; temp=*pm; *pm=*pn; *pn=temp; } void Random(unsigned char a[]){ int i; int m=256; //printf("\n产生范围在0到255的随机数 \n"); srand( (unsigned char)time( NULL ) );

2013-01-21

Euclid算法判断互素

//by史瑞 #include<stdio.h> #include<stdlib.h> #define bool int #define true 1 #define false 0 #define M 2//判断多少个数互素 static long int Number[M]={170,201}; bool JudgePrime(long int Ina,long int Inb){ long int r,q,t=0,v=1,temp; long int a,b; if(Ina>=Inb){ a=Ina; b=Inb; } else{ b=Ina; a=Inb; } while(1){ q=(long int)a/b; r=a-b*q; a=b; b=r; temp=t; t=v; v=temp-q*v; if(b==0) break; } if(a==1) return true; else return false; }//JudgePrime

2013-01-21

B_M算法求线性复杂度

可以处理无限数据,求其线性复杂度 //by史瑞 //LFSR线性移位寄存器以及求异或运算OK unsigned char LFSRB_M(unsigned char *fun,unsigned char *seq,unsigned long Cont){ unsigned long x; unsigned char ch=0x00,t=0x00,*array; array=(unsigned char *)malloc(Cont*sizeof(unsigned char)); for(x=0;x<Cont;x++) *(array+x)=(*(seq+x))&(*(fun+x)); for(x=0;x<Cont*8;x++){ ch=(*array)&0x80; LeftShift(array,Cont); t^=ch; } free(array); return t; } #define word(ln) ((ln-1)/8+1) #define place(ln) ((ln-1)%8) //Berlek_Massey求生成任意序列的联接多项式OK unsigned char *Berlek_Massey(unsigned char *seq,unsigned long *Rank,unsigned long Cont,FILE *fmm){ unsigned long n=0,m,lm,ln=0; int d; unsigned long lfm; unsigned char *fun,*fm,*array,ch,t=0x00; unsigned char *func,*fmc; unsigned long x,y,k; fun=(unsigned char *)malloc(sizeof(unsigned char)); *(fun)=0x00; for(x=0;x<Cont*8;x++){ if(ln!=0){ array=(unsigned char *)malloc(word(ln)); InitialDSR(array,word(ln)); for(y=0;y<ln;y++){ ch=((*(seq+(n-(y+1))/8))<<((n-(y+1))%8))&0x80; if(ch) *(array+y/8)^=(ch>>(y%8)); } t=LFSRB_M(fun,array,word(ln)); d=((((*(seq+n/8))<<(n%8))&0x80;)^t)?1:0; free(array); } else d=(((*(seq+n/8))<<(n%8))&0x80;)?1:0; if(d){ if(ln!=0){ lm=ln; func=(unsigned char *)malloc(word(ln)*sizeof(unsigned char)); memcpy(func,fun,word(ln)); if(ln<(n+1-ln)){ ln=n+1-ln; } fmc=(unsigned char *)malloc(word(ln)*sizeof(unsigned char)); InitialDSR(fmc,word(ln)); memcpy(fmc,fm,word(lfm)); for(k=0;k<n-m;k++){ RightShift(fmc,word(ln)); } ch=0x80; *(fmc+(n-m-1)/8)^=(ch>>((n-m-1)%8)); fun=(unsigned char *)realloc(fun,word(ln)*sizeof(unsigned char)); for(k=word(lm);k<word(ln);k++) *(fun+k)=0x00; XorDSR(fun,fmc,word(ln)); free(fmc); if(lm<(n+1-lm)){ m=n; lfm=lm; fm=(unsigned char *)realloc(fm,word(lm)); memcpy(fm,func,word(lfm)); } free(func); } else{ ln=n+1; m=n; if(m!=0){ fm=(unsigned char *)malloc(word(m)*sizeof(unsigned char)); InitialDSR(fm,word(m)); lfm=m; } else{ fm=(unsigned char *)malloc(sizeof(unsigned char)); *fm=0x00; lfm=1; } fun=(unsigned char *)realloc(fun,word(ln)); InitialDSR(fun,word(ln)); ch=0x80; ch>>=(place(ln)); *(fun+(word(ln)-1))^=ch; } } n++; printf("\t<%d,%d>",n,ln); fprintf(fmm,"\t<n,d,ln>=<%d,%d,%d>",n,d,ln); if(n%3==0){ printf("\n"); fprintf(fmm,"\n"); } } printf("\nFn="); // for(k=0;k<word(ln);k++) // FromBytetoBit(*(fun+k)); *Rank=ln; return fun; }

2013-01-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除