密码生成器c语言程序,C++全密码生成的实现代码
这里所谓的“全密码”指的是指定字符串中所有可能出现的密码。以字符串“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++全密码生成的实现代码相关推荐
- 密码生成器c语言程序,请设计 一个密码生成器,要求随机生成4组10位密码(C语言)...
请设计 一个密码生成器,要求随机生成4组10位密码(密码只能由字母和数字组成),每一组必须包含至少一个大写字母,每组密码不能相同,输出生成的密码. #include #include #include ...
- 凯撒密码c语言小写字母,凯撒密码c(c语言编程凯撒密码)
凯撒密码c(c语言编程凯撒密码) 2020-05-15 13:09:51 共10个回答 #include#includeintmain(){charsave[10][30];inta,b,i,j;sc ...
- php推荐码生成,最新最全PHP生成制作验证码代码详解(推荐),验证码详解_PHP教程...
最新最全PHP生成制作验证码代码详解(推荐),验证码详解 1.0 首先先看代码 好,现在结合以上代码,来分析分析以上用到的几个函数: ① imagecreatetruecolor(); imagecr ...
- ONVIF协议网络摄像机(IPC)客户端程序开发使用gSOAP生成ONVIF框架代码(C++)03-->Windows
其它的不多说,直接开始步骤. 我的版本是2.8.109,目前最新版本. 实际上,onvif的源码是兼容Linux.Windows版本的,例如如果你已经在这篇文章ONVIF协议网络摄像机(IPC)客户端 ...
- emacs c语言 自动补全,Emacs 与 C/C++ 代码自动补全
基于 Emacs 的 company 模式并配合 semantic 文法分析器,实现 Emacs 的 C/C++ 代码自动补全. 关于 Emacs 的代码自动补全 代码自动补全的功能,对于使用 Ema ...
- 在Windows 10上将C语言程序转成16位8086汇编代码
大多数人在高校里面学的第一门汇编语言是基于16位的Intel 8086处理器(即8086汇编语言),现在的大多数系统都是32或者64位的,为了实验需要我们一般安装DosBox来作为16位DOS系统模拟 ...
- 怎么给c语言程序加个个密码,C语言对文件加上密码
博主刚刚学完C语言的基础语法知识 一直想写一些自己的程序 而博主又是一个很懒的人 特别是对于记忆的东西很懒 我平时都把重要的东西放在一个txt文档里面 于是我便想对我的那个文件进行加密码 没错就是加密 ...
- 凯撒密码c++语言程序,凯撒密码(加密与解密)
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. /******************************************** ...
- c语言程序补全,C语言程序设计试题
C语言程序设计考试试题 1.父亲今年30岁,儿子今年6岁,编程求出多少年后父亲的年龄是儿子的2倍.请将下列程序补充完整. Main() { [ 1 ]son=6,father=30; While(fa ...
- c语言程序如何首行缩进,什么叫代码缩进
框住N行代码 按TAB键 这样代码有层次感 if (n>0) { //缩进写代码 xxxxxx } 什么是代码的缩进格式?是关于C语言.就是源程序的书写格式,看上去可以更清楚.比如 if(a&g ...
最新文章
- 非常有用的15个Linux 服务器监控命令
- 如何从校招脱颖而出?支付宝程序媛王妍岩:自信+方法
- easy bootstrap模板
- [Magento error] The url is not accessible, unable to read response
- Java基础教程:注解
- 2016.2.23_导入maven工程遇见的问题【问题】
- linux mysql 5.7.13 安装_Linux环境下mysql5.7.13安装教程
- GIS三维可视化技术在输电领域的应用研讨
- 云计算系统典型物理架构
- 古诗文登录验证码识别及登录
- C和C++的二进制,八进制,十六进制输出格式(全面版)
- Google 谷歌创业训练营2021展示日回顾
- galaxy s8 android pc,三星S8/S8+发布!全面屏、智能助理、秒变PC,苹果8已败
- 目标检测和分类的评价指标
- RPM REBUILD
- 互联网单点登录集成方案
- 用户正确使用趋势跟随的交易系统的方法
- 研究量子计算机学什么,量子计算,量子信息技术,要学什么专业?
- CST视图view的操作
- 一个积分不等式的再讨论
热门文章
- 计算机图形驱动程序原理,如何安装计算机图形驱动程序?
- ddk开发 c语言,ddk_helloWDM_原代码是网上高手的杰作
- Windows XP3安装internet 信息服务(IIS)时对策
- Java小白入门200例54之打印水仙花数
- 【机器人控制架构】控制系统架构【控制流程图、控制算法】
- BI系统打包Docker镜像及容器化部署的具体实现
- Visual Studio 2012安装教程
- 通过企业微信SCRM营销系统,完成百万私域用户引流
- 西门子PLC与DCS通讯
- 手机斗鱼服务器无响应,win7看斗鱼直播很卡怎么办|win7斗鱼未响应的解决方法