这里所谓的“全密码”指的是指定字符串中所有可能出现的密码。以字符串“0123456789”为例,可能出现的2位密码会有100个,即L^N个。(L代表字符串的长度,N代表要生成密码的位数)。

第一种方法:递归。这个比较容易理解,每分解出一个字符,设成新串,然后靠到上一个串上即可。代码如下:

void CpasswordCreateDlg::CreatePass1(CString inStr,int m,CString outStr)

{

if (m==0)

{

fp.SeekToEnd();

CString tStr=outStr+L"\n";

fp.WriteString(tStr);//fp为一个CStdioFile,全局变量

passFlag++;//生成了多少个密码,以用于进度条,为ULONGLONG类型

int persent=int((float)passFlag/passScore*100);//passScore要生成密码的总数量

if (persent%5==0)

{

m_progressCtrl.SetPos(persent);//m_progressCtrl是进度条

}

}

else

{

for (int i=0;i

{

CreatePass1(inStr,m-1,outStr+inStr.Mid(i,1));

}

}

}

第二种方法:循环的方式,不使用递归。代码如下,现在如果让我解释代码的意思,还真想不出来当时为什么这么设计,竟然无法理解自己当时为什么这么牛B,能想出下面的代码。

void CpasswordCreateDlg::CreatePass2(CString inStr,int m)

{

fp.SeekToEnd();

int *flag=new int [m];//用一个整形指针取出字符串中某个位置的字符

for (int i=0;i

{

flag[i]=0;

}

int inStrLen=inStr.GetLength();

ULONGLONG passCount=(ULONGLONG)pow((double)inStrLen,m);

for (ULONGLONG i=0;i

{

for (int t=1;t

{

if (flag[m-t]>0&&flag[m-t]%inStrLen==0)//这个地方比较拗口,我也忘记当时是怎么出来的这种想法的。

{

flag[m-t-1]++;

flag[m-t]=0;

}

}

CString str=L"";

for (int j=0;j

{

str+=inStr.GetAt(flag[j]);

}

flag[m-1]++;

str+=L"\n";

fp.WriteString(str);

passFlag++;

int persent=int((float)passFlag/passScore*100);

if (persent%5==0)

{

m_progressCtrl.SetPos(persent);

}

}

delete [] flag;

}

生成的速度不是很快,一秒钟大约2万多个吧,实际上是基本没什么用的。例如:以这个速度要生成5位的全密码,密码个数为916132832,大约需要12个小时,如果6位呢,7位呢,所以是基本没什么用的,效率太低了。希望下一步能用多个线程实现,速度再快一些。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

密码生成器c语言程序,C++全密码生成的实现代码相关推荐

  1. 密码生成器c语言程序,请设计 一个密码生成器,要求随机生成4组10位密码(C语言)...

    请设计 一个密码生成器,要求随机生成4组10位密码(密码只能由字母和数字组成),每一组必须包含至少一个大写字母,每组密码不能相同,输出生成的密码. #include #include #include ...

  2. 凯撒密码c语言小写字母,凯撒密码c(c语言编程凯撒密码)

    凯撒密码c(c语言编程凯撒密码) 2020-05-15 13:09:51 共10个回答 #include#includeintmain(){charsave[10][30];inta,b,i,j;sc ...

  3. php推荐码生成,最新最全PHP生成制作验证码代码详解(推荐),验证码详解_PHP教程...

    最新最全PHP生成制作验证码代码详解(推荐),验证码详解 1.0 首先先看代码 好,现在结合以上代码,来分析分析以上用到的几个函数: ① imagecreatetruecolor(); imagecr ...

  4. ONVIF协议网络摄像机(IPC)客户端程序开发使用gSOAP生成ONVIF框架代码(C++)03-->Windows

    其它的不多说,直接开始步骤. 我的版本是2.8.109,目前最新版本. 实际上,onvif的源码是兼容Linux.Windows版本的,例如如果你已经在这篇文章ONVIF协议网络摄像机(IPC)客户端 ...

  5. emacs c语言 自动补全,Emacs 与 C/C++ 代码自动补全

    基于 Emacs 的 company 模式并配合 semantic 文法分析器,实现 Emacs 的 C/C++ 代码自动补全. 关于 Emacs 的代码自动补全 代码自动补全的功能,对于使用 Ema ...

  6. 在Windows 10上将C语言程序转成16位8086汇编代码

    大多数人在高校里面学的第一门汇编语言是基于16位的Intel 8086处理器(即8086汇编语言),现在的大多数系统都是32或者64位的,为了实验需要我们一般安装DosBox来作为16位DOS系统模拟 ...

  7. 怎么给c语言程序加个个密码,C语言对文件加上密码

    博主刚刚学完C语言的基础语法知识 一直想写一些自己的程序 而博主又是一个很懒的人 特别是对于记忆的东西很懒 我平时都把重要的东西放在一个txt文档里面 于是我便想对我的那个文件进行加密码 没错就是加密 ...

  8. 凯撒密码c++语言程序,凯撒密码(加密与解密)

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. /******************************************** ...

  9. c语言程序补全,C语言程序设计试题

    C语言程序设计考试试题 1.父亲今年30岁,儿子今年6岁,编程求出多少年后父亲的年龄是儿子的2倍.请将下列程序补充完整. Main() { [ 1 ]son=6,father=30; While(fa ...

  10. c语言程序如何首行缩进,什么叫代码缩进

    框住N行代码 按TAB键 这样代码有层次感 if (n>0) { //缩进写代码 xxxxxx } 什么是代码的缩进格式?是关于C语言.就是源程序的书写格式,看上去可以更清楚.比如 if(a&g ...

最新文章

  1. 非常有用的15个Linux 服务器监控命令
  2. 如何从校招脱颖而出?支付宝程序媛王妍岩:自信+方法
  3. easy bootstrap模板
  4. [Magento error] The url is not accessible, unable to read response
  5. Java基础教程:注解
  6. 2016.2.23_导入maven工程遇见的问题【问题】
  7. linux mysql 5.7.13 安装_Linux环境下mysql5.7.13安装教程
  8. GIS三维可视化技术在输电领域的应用研讨
  9. 云计算系统典型物理架构
  10. 古诗文登录验证码识别及登录
  11. C和C++的二进制,八进制,十六进制输出格式(全面版)
  12. Google 谷歌创业训练营2021展示日回顾
  13. galaxy s8 android pc,三星S8/S8+发布!全面屏、智能助理、秒变PC,苹果8已败
  14. 目标检测和分类的评价指标
  15. RPM REBUILD
  16. 互联网单点登录集成方案
  17. 用户正确使用趋势跟随的交易系统的方法
  18. 研究量子计算机学什么,量子计算,量子信息技术,要学什么专业?
  19. CST视图view的操作
  20. 一个积分不等式的再讨论

热门文章

  1. 计算机图形驱动程序原理,如何安装计算机图形驱动程序?
  2. ddk开发 c语言,ddk_helloWDM_原代码是网上高手的杰作
  3. Windows XP3安装internet 信息服务(IIS)时对策
  4. Java小白入门200例54之打印水仙花数
  5. 【机器人控制架构】控制系统架构【控制流程图、控制算法】
  6. BI系统打包Docker镜像及容器化部署的具体实现
  7. Visual Studio 2012安装教程
  8. 通过企业微信SCRM营销系统,完成百万私域用户引流
  9. 西门子PLC与DCS通讯
  10. 手机斗鱼服务器无响应,win7看斗鱼直播很卡怎么办|win7斗鱼未响应的解决方法