这几天闲着没事又想着用C++做一个密码生成器,方便我以后生成不容易攻破密码,并且我还出了几种模式,感兴趣的可以下载下来看看。

上代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cstdlib>
#include<ctime>
#include<conio.h>
#include<windows.h>
#define LL long long
using namespace std;
string s11;
char sf[27]={' ','~','!','@','#','$','%','^','&','*','_','+','-','=','/','(',')','{','}',';',':','[',']','<','>',',','.'};
void End(int tag){if(tag==1)printf("\n生成成功!已为您保存到当前文件夹中的 password.txt ,请及时下载,重新生成密码会替换原来的密码!\n");elseprintf("\n生成成功!已为您保存到当前文件夹中的 password.csv ,请及时下载,重新生成密码会替换原来的密码!\n");
}
int R(int x){return ((LL)rand()*(LL)rand())%(LL)x+1ll;
}
void sj(){printf("您选择的类型:纯随机强密码\n\n");printf("请输入密码位数:");int n;scanf("%d",&n);system("cls");char ch='.',s[5];string ri[5];for(int i=0;i<=4;i++)s[i]=' ',ri[i]="  ";int now=1,g=4;string ss[5];ss[1]="数字";ss[2]="大写字母";ss[3]="小写字母";ss[4]="特殊符号  ~ ! @ # $ % ^ & * _ + - = ? / ( ) { } ; : [ ] < > , .";int flag=1;while(ch!='k'){printf("您选择的类型:纯随机强密码\n");printf("您输入密码位数:%d\n\n",n);printf("\n\n请选择所包含的字符类型(可多选):\n w s :上下控制\n j :确定选择此项(再次输入j取消选择)\n k :完成选择\n n :");if(flag==0)printf("取消"); printf("全选\n m :反选\n (请先将输入模式调整为英文)\n\n");s[now]='>';for(int i=1;i<=g;i++)printf("   %c %s  %s\n",s[i],ri[i].c_str(),ss[i].c_str());ch=getch();system("cls");switch(ch){case 'w':{s[now]=' ';now--;if(now==0)now=g;break;}case 's':{s[now]=' ';now++;if(now==g+1)now=1;break;}case 'j':{if(ri[now]=="  ")ri[now]="√";elseri[now]="  ";flag=1;break;}case 'k':break;case 'n':{if(flag==1)for(int i=1;i<=g;i++)ri[i]="√",flag=0;elsefor(int i=1;i<=g;i++)ri[i]="  ",flag=1;break;}case 'm':{int ggg=0;for(int i=1;i<=g;i++)if(ri[i]=="  ")ri[i]="√",ggg++;elseri[i]="  ";flag=1;if(ggg==g)flag=0;break;}default:{printf("请输入'w','s','j','k','n'or'm'  谢谢合作!");Sleep(1000);system("cls");break;}}}system("cls");printf("您选择的类型:纯随机强密码\n");printf("您输入密码位数:%d\n",n);printf("您选择所包含的字符类型:\n");int u=0,ak[5]={0};for(int i=1;i<=4;i++)if(ri[i]!="  "){printf("  %s\n",ss[i].c_str());u++;ak[u]=i;}End(1);FILE* l=fopen("password.txt","w");for(int i=1;i<=n;i++){int t=R(u);char sd;switch(ak[t]){case 1:{sd=R(10)-1+'0';break;}case 2:{sd=R(26)-1+'A';break;}case 3:{sd=R(26)-1+'a';break;}case 4:{sd=sf[R(26)];break;}}printf("%c",sd);fprintf(l,"%c",sd);}return ;
}
void sr(){string date;while(1){printf("请输入您的生日(纯数字)(如19980111):");cin>>date;if(date.size()!=8){printf("输入格式不正确!");Sleep(1000);system("cls");continue;}int flag=0;for(int i=0;i<8;i++)if(!isdigit(date[i])){printf("输入格式不正确!");Sleep(1000);system("cls");flag=1;break;}if(flag==1)continue;break;}End(1);int dk=8;for(int i=0;i<dk;i++){int kk=R(5);if(kk!=1){int dd=R(4);while(dd--){int pp=R(4);string sd="";switch(pp){case 1:{sd+=char(sf[R(26)]);break;}case 2:{sd+=char(R(26)-1+'A');break;}case 3:{sd+=char(R(26)-1+'a');break;}case 4:{sd+=char(sf[R(26)]);break;}}date.insert(i,sd);i++;dk++;}}}FILE* l=fopen("password.txt","w");printf("%s",date.c_str());fprintf(l,"%s",date.c_str());return ;
}
void mz(int daa){string name;while(1){if(daa==3)printf("请输入您的姓名拼音全拼或首字母(纯小写字母)(如zhangsan(张三):");elseprintf("请输入这句话拼音全拼或首字母(纯小写字母)(如angszax(爱你孤身走暗巷)):");cin>>name;int flag=0;for(int i=0;i<name.size();i++)if(!islower(name[i])){printf("输入格式不正确!");Sleep(1000);system("cls");flag=1;break;}if(flag==1)continue;break;}End(1);int dk=name.size();for(int i=0;i<dk;i++){int kk=R(5);if(kk!=1){int dd=R(4);while(dd--){int pp=R(5);string sd="";switch(pp){case 1:{sd+=char(sf[R(26)]);break;}case 2:{sd+=char(R(26)-1+'A');break;}case 3:{sd+=char(R(10)-1+'0');break;}case 4:{sd+=char(sf[R(26)]);break;}case 5:{name[i]=name[i]-'a'+'A';break;}}name.insert(i,sd);i++;dk++;}}}FILE* l=fopen("password.txt","w");printf("%s",name.c_str());fprintf(l,"%s",name.c_str());return ;
}
void self(int aad){printf("请输入一个字符串:");cin>>s11;End(1);int dk=s11.size();for(int i=0;i<dk;i++){int kk=R(5);if(kk!=1){int dd=R(4);while(dd--){int pp=R(5);string sd="";switch(pp){case 1:{sd+=char(sf[R(26)]);break;}case 2:{sd+=char(R(26)-1+'A');break;}case 3:{sd+=char(R(26)-1+'a');break;}case 4:{sd+=char(sf[R(26)]);break;}case 5:{sd+=char(R(10)-1+'0');break;}}s11.insert(i,sd);i++;dk++;}}}if(aad==5){FILE* l=fopen("password.txt","w");printf("%s",s11.c_str());fprintf(l,"%s",s11.c_str());}else{printf("初步加密密码:");printf("%s",s11.c_str());Sleep(1000);}return ;
}
void pl(){system("cls");char ch='.',s[15/*网站总个数+1*/];string ri[15/*网站总个数+1*/];for(int i=0;i<=14/*网站总个数*/;i++)s[i]=' ',ri[i]="  ";int now=1,g=14/*网站总个数*/;string ss[15/*网站总个数+1*/],sss[15/*网站总个数+1*/];ss[1]="微信";sss[1]="weixin";ss[2]="QQ";sss[2]="QQ";ss[3]="百度";sss[3]="baidu"; ss[4]="哔哩哔哩";sss[4]="bilibili";ss[5]="抖音";sss[5]="douyin";ss[6]="快手";sss[6]="kuaishou";ss[7]="微博";sss[7]="weibo";ss[8]="Microsoft账户";sss[8]="Microsoftzhanghu";ss[9]="Apple ID";sss[9]="AppleID";ss[10]="Android账户";sss[10]="Android账户";ss[11]="小米账户";sss[11]="xiaomizhanghu";ss[12]="华为账户";sss[12]="huaweizhuanghu";ss[13]="Windows PIN";sss[13]="WindowsPIN";ss[14]="Linux账户";sss[14]="Linuxzhanghu";/*ss[15]="";//网站原名 sss[15]="";//网站拼音 */int flag=1;while(ch!='k'){printf("初步加密密码:");printf("%s",s11.c_str());printf("\n\n请选择网站(可多选):\n w s :上下控制\n j :确定选择此项\n k :完成选择\n n :");if(flag==0)printf("取消"); printf("全选\n m :反选\n (请先将输入模式调整为英文)\n\n");s[now]='>';for(int i=1;i<=g;i++)printf("   %c %s  %s\n",s[i],ri[i].c_str(),ss[i].c_str());ch=getch();system("cls");switch(ch){case 'w':{s[now]=' ';now--;if(now==0)now=g;break;}case 's':{s[now]=' ';now++;if(now==g+1)now=1;break;}case 'j':{if(ri[now]=="  ")ri[now]="√";elseri[now]="  ";flag=1;break;}case 'k':break;case 'n':{if(flag==1)for(int i=1;i<=g;i++)ri[i]="√",flag=0;elsefor(int i=1;i<=g;i++)ri[i]="  ",flag=1;break;}case 'm':{int ggg=0;for(int i=1;i<=g;i++)if(ri[i]=="  ")ri[i]="√",ggg++;elseri[i]="  ";flag=1;if(ggg==g)flag=0;break;}default:{printf("请输入'w','s','j','k','n'or'm'  谢谢合作!");Sleep(1000);system("cls");break;}}}int u=0,ak[15]={0};for(int i=1;i<=14;i++)if(ri[i]!="  ")ak[++u]=i;system("cls");char ch2='.',s2[4];string ri2[4];for(int i=0;i<=3;i++)s2[i]=' ',ri2[i]="  ";int now2=1,g2=3;string ss2[4];ss2[1]="网站名拼音+'/'+初步加密密码(如:weixin/ah3d%hc)";ss2[2]="网站名拼音首字母+初步加密密码+网站名拼音尾字母(如:wah3d%hcn)";ss2[3]="在初步密码第(网站名拼音长度)位前插入在 shift+(网站名拼音长度)得到的字符(如:ah3d%^hc)";while(ch2!='k'){printf("初步加密密码:");printf("%s",s11.c_str());printf("\n\n请选择批量加密方式(单选):\n w s :上下控制\n j :选择此项(再次输入j取消选择)\n k :完成选择\n\n");s2[now2]='>';for(int i=1;i<=g2;i++)printf("   %c %s  %s\n",s2[i],ri2[i].c_str(),ss2[i].c_str());ch2=getch();system("cls");switch(ch2){case 'w':{s2[now2]=' ';now2--;if(now2==0)now2=g2;break;}case 's':{s2[now2]=' ';now2++;if(now2==g2+1)now2=1;break;}case 'j':{for(int i=1;i<=g2;i++)ri2[i]="  ";ri2[now2]="√";break;}case 'k':break;default:{printf("请输入'w','s','j'or'k'  谢谢合作!");Sleep(1000);system("cls");break;}}}system("cls");End(2);FILE* l=fopen("password.csv","w");fprintf(l,"网站,密码\n");switch(now2){case 1:{for(int i=1;i<=u;i++){string ans=sss[ak[i]];ans+="/";ans+=s11;printf("%s:\n%s\n",ss[ak[i]].c_str(),ans.c_str());fprintf(l,"%s,%s\n",ss[ak[i]].c_str(),ans.c_str());}break;}case 2:{for(int i=1;i<=u;i++){string ans="";ans+=sss[ak[i]][0];ans+=s11;ans+=sss[ak[i]][sss[ak[i]].size()-1];printf("%s:\n%s\n",ss[ak[i]].c_str(),ans.c_str());fprintf(l,"%s,%s\n",ss[ak[i]].c_str(),ans.c_str());}break;}case 3:{for(int i=1;i<=u;i++){string ans=s11;string hc;switch(sss[ak[i]].size()){case 1:{hc="!";break;}case 2:{hc="@";break;}case 3:{hc="#";break;}case 4:{hc="$";break;}case 5:{hc="%";break;}case 6:{hc="^";break;}case 7:{hc="&";break;}case 8:{hc="*";break;}case 9:{hc="(";break;}case 10:{hc=")";break;}default:{hc="?";break;}}if(ans.size()>=s11.size())ans.insert(sss[ak[i]].size(),hc);elseans.insert(ans.size(),hc);printf("%s:\n%s\n",ss[ak[i]].c_str(),ans.c_str());fprintf(l,"%s,%s\n",ss[ak[i]].c_str(),ans.c_str());}break;}}return ;
}
int main(){HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle,&CursorInfo);//获取控制台光标信息     CursorInfo.bVisible = false; //隐藏控制台光标SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态srand((unsigned)time(NULL));char ch='.',s[51];for(int i=0;i<=50;i++)s[i]=' ';int now=1,g=6;string ss[51];ss[1]="  纯随机强密码";ss[2]="  生日组合强密码";ss[3]="  姓名组合强密码";ss[4]="  一句话组合强密码";ss[5]="  自己输入无序字符串进行组合强密码";ss[6]="  众多网站批量生成同样规律的强密码";while(ch!='j'){printf("欢迎使用密码生成器\n");printf("请选择生成密码类型:w s上下控制,j确定 (请先将输入模式调整为英文)\n\n");s[now]='>';for(int i=1;i<=g;i++)printf("   %c%s\n",s[i],ss[i].c_str());//cout<<"   "<<s[i]<<ss[i]<<endl;ch=getch();system("cls");switch(ch){case 'w':{s[now]=' ';now--;if(now==0)now=g;break;}case 's':{s[now]=' ';now++;if(now==g+1)now=1;break;}case 'j':break;default:{printf("请输入'w','s'or'j'  谢谢合作!");Sleep(1000);system("cls");break;}}}switch(now){case 1:{sj();break;}case 2:{sr();break;}case 3:{mz(3);break;}case 4:{mz(4);break;}case 5:{self(5);break;}case 6:{self(6);pl();break;}}printf("\n\n\n\a感谢使用此密码生成器,最终解释权归吴同学所有!\n\n窗口将在10秒后自动关闭\r");for(int i=9;i>=0;i--){Sleep(1000);printf("窗口将在%2d秒后自动关闭\r",i);}return 0;
}

备注:写代码的时候为了方便许多变量名和函数名都是随便写的没有特殊含义)

解释:在第322-359行中,因为网站过多只列举了14个,如有需要,可以继续添加,格式都标注在下面的注释里了,并且上面的标注了"/* */"的内容也需要修改改成什么都标注在里面的。

如果还有其他疑问可以提在下面的评论区,我会一一解答。

如果你觉得这篇文章写的很好,记得关注,点赞,评论,转发

源程序

强密码生成器源程序https://download.csdn.net/download/m0_48463380/86238683

强密码生成器(C++)相关推荐

  1. 强密码生成器的设计与实现

    目 录 摘 要 I Abstract II 1绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 1 1.3研究主要内容 2 1.3.1题目要求 2 1.3.2本设计主要硬件功能部分 2 1.3 ...

  2. 强密码生成器[更新中]

    前言 最近在使用Edge浏览器时候,发现在密码中有几个已经泄露的密码!! 但还好不是重要的密码,不然~~~你懂得 所以我首次启发,编写了一个生成强密码的c++程序,代码自取 正文 程序其实原理很简单: ...

  3. 用python实现一个密码生成程序_Python实现密码生成器

    Python实现密码生成器 环境准备 python3.6 pip install pyinstaller pip install gooey 代码部分 # encoding:utf8 import r ...

  4. 【简单的密码生成器】

    简单的密码生成器 用python写了一个简单的密码生成器.生成的密码包含数字.小写字母.大写字母.特殊字符.为了确保这四种类型的密码都存在,最后4次循环分别把四种类型的值插入到了密码的随机位置. 代码 ...

  5. 在 Linux 终端下生成随机/强密码的五种方法 | Linux 中国

    最近我们在网站上发表过一篇关于 检查密码复杂性/强度和评分的文章.它可以帮助你检查你的密码的强度和评分. 我们可以手工创建我们需要的密码.但如果你想要为多个用户或服务器生成密码,解决方案是什么呢? 是 ...

  6. javascript 16位 密码生成器 keymaker 16bit

    工作中经常需要生成16位强密码给应用授权.以前在windows环境下使用keypass,目前公司不允许使用windows操作系统,特意写了一个生成器. <!DOCTYPE HTML PUBLIC ...

  7. 密码学安全强随机数生成器_强密码学简介

    密码学安全强随机数生成器 让我惊讶的一件事是,大多数开发人员都不熟悉强大的加密技术. 在我的职业生涯中,我已经看到过各种各样的错误,这些错误会导致数据泄漏,可猜测的密码,不幸的泄露甚至更糟. 令人高兴 ...

  8. pythongui登录界面密码显示_用python写一个带有gui界面的密码生成器

    需要用到的库: tkinter:构建gui界面 pyperclip:复制功能 random:生成随机数 string:处理字符串 代码: from tkinter import * import ra ...

  9. 【Python】密码生成器

    import random import string print("欢迎使用密码生成器") def passlength():print("你想要多长的密码:" ...

  10. Python生成强密码字典文件

    本文要点在于演示如何使用正则表达式验证密码强度,以及如何生成大量字符的排列.由于下面代码生成的字典过于庞大,所以并没有很直接的应用场景,可对生成的强密码再次进行过滤,仅保留可能性较大的密码,这样可以减 ...

最新文章

  1. 查询数据库表名,数据表信息,MySQL Key值(PRI, UNI, MUL)的含义
  2. php源代码压缩,PHP_PHP 源代码压缩小工具,使用方法:(在命令行运行) 复 - phpStudy...
  3. hadoop大数据——mapreduce程序提交运行模式及debug方法
  4. 希尔伯特曲线的绘制c语言,用四叉树和希尔伯特曲线做空间索引
  5. 为什么[]==0;JavaScript里什么情况下a==!a为true呢?
  6. 团队工作室展示官网源码带后台-源团V1.0版本
  7. 在html显示数据库的信息,从数据库中提取信息并将其显示在HTML div
  8. Python进阶-----类的内置item属性方法
  9. js常用几种类方法实现
  10. 《C++ Primer》第五版课后习题解答_第六章(1)(01-07)
  11. ExtJS TreeGrid的使用方法
  12. Python游戏编程(一)“猜数字”游戏
  13. 高效能人士的七个习惯--由内而外全面造就自己
  14. 计算机nls数据丢失损坏无法启动,电脑开机时,显示NLS数据丢失或损坏怎么处理...
  15. 计算机的空间复用技术应用,MIMO技术的介绍
  16. 引起计算机故障的因素有哪些,电源故障引起的电脑问题有哪些
  17. thymeleaf 语法——th:text默认值、字符串连接、th:attr、th:href 传参、th:include传参、th:inline 内联、th:each循环、th:with、th:if
  18. 安卓APP蓝牙上位机的编写二——搜索附近蓝牙设备
  19. 《SteamVR2.2.0之Skeleton_Poser》(Yanlz+Unity+XR+VR+AR+MR+SteamVR_Skeleton_Poser+Skeleton+Poser+立钻哥哥+==)
  20. 用老版的python和pycharm好,还是新版的python和pycharm好?

热门文章

  1. 飞信免费发短信API接口
  2. ps色彩范围调暗图片局部
  3. layer修改弹框标题样式
  4. Linux df 命令使用详解
  5. pandas38 df.assign添加修改列( tcy)
  6. exp 导数oracle,指数函数 exp(x) 导数的直接求法
  7. RK987按键失灵问题
  8. c语言逻辑运算符意义,c语言逻辑运算符怎么理解?
  9. Android根据包名获取APP名称
  10. mysql比较两个表数据的差异_mysql实用技巧之比较两个表是否有不同数据的方法分析...