欢迎访问:常州市武进区嘉泽中心小学网站 !今天是:
栏目列表
您现在的位置是:首页>>教师>>计算机技术>>程序设计>>杂项>>文章内容
穷举密码算法
发布时间:2008-11-20   点击:   来源:本站原创   录入者:佚名
  //******************************************************************* //在许多情况下我们需要穷举组合的算法,比如密码词典。 //我在程序员大本营上不止一次看到有人需要穷举密码的算法,就写了一个。 //这个算法的关键是密码下标进位的问题。 //另外本例子中的写文件语句效率比较低,为了降低算法复杂度没有优化。 //如果要提高写文件的效率,可以使用缓冲区,分批写入。 //*********************************************BREATH.CNPICK.COM***** void CreatePassword() { #define PassWordMax 8//将生成密码的最大长度 char a[]="0123456789abcdefghijklmnopqrstuvwxyz";//可能的字符 long nDictCount=sizeof(a);//获得密码词典长度 char cPass[PassWordMax+2];//将生成的密码 long nMinL=1,nMaxL=3;//本例中密码长度从1-3 long Array[PassWordMax];//密码词典下标 ASSERT(nMinL<=nMaxL && nMaxL<=PassWordMax);//容错保证 long nLength=nMinL; register long j,i=0; BOOL bNext; CStdioFile file; file.Open("C:\\dict.txt",CFile::modeCreate|CFile::modeWrite); while(nLength<=nMaxL) { for(i=0;i<passwordmax;i++) array[i]="0;" bnext="TRUE;" while(bnext)="" {="" for(i=""></passwordmax;i++)><nlength;i++) cpass[i]="a[Array[i]];" cpass[i]='\0' ;="" file.writestring(cpass);="" file.writestring("\n");="" for(j="nLength-1;j">=0;j--)//密码指针进位 { Array[j]++; if(Array[j]!=nDictCount-1)break; else { Array[j]=0; if(j==0)bNext=FALSE; } } } nLength++; } file.Close(); }</nlength;i++)>
附件:
    关闭窗口
    打印文档
    账号登录
    保持登录 忘记密码?
    账号与武进教师培训平台同步