VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
穷举密码算法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

//******************************************************************* //在许多情况下我们需要穷举组合的算法,比如密码词典。 //我在程序员大本营上不止一次看到有人需要穷举密码的算法,就写了一个。 //这个算法的关键是密码下标进位的问题。 //另外本例子中的写文件语句效率比较低,为了降低算法复杂度没有优化。 //如果要提高写文件的效率,可以使用缓冲区,分批写入。 //*********************************************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=0;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(); }


相关文章

相关软件