这几天闲着没事又想着用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");
else
printf("\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]="√";
else
ri[now]=" ";
flag=1;
break;
}
case 'k':break;
case 'n':{
if(flag==1)
for(int i=1;i<=g;i++)
ri[i]="√",flag=0;
else
for(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++;
else
ri[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");
prin