穷举密码算法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

breath

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值