📄 passwordgeneration.cpp
字号:
// PasswordGeneration.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "PasswordGeneration.h"
#include "string.h"
#include "malloc.h"
//////////////////////////////////////////////////////////////////////
// CPasswordGeneration Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPasswordGeneration::CPasswordGeneration()
{
cCapital = new char[26];
cDig = new char[10];
cDigCapital = new char[36];
cDigLowercase = new char[36];
cDigLowercaseCapital = new char[62];
cLowercase = new char[26];
cLowercaseCapital = new char[52];
}
CPasswordGeneration::~CPasswordGeneration()
{
delete []cCapital;
delete []cDig;
delete []cDigCapital;
delete []cDigLowercase;
delete []cDigLowercaseCapital;
delete []cLowercase;
delete []cLowercaseCapital;
}
//数字产生密码
void CPasswordGeneration::DigPasswordGen(char cFilepath[],int iNum,int iFileLength)
{
int i;
//赋值0-9
for (i=48; i<=57; i++)
{
cDig[i-48] = i;
}
int *Password = new int[iNum+1];
char *Pass = new char[iNum+1];
for (i=0; i<=iNum; i++)
{
Password[i] = 0;
}
FILE *fp;
int j = 0;
iCount = 0;//用来统计写入文件的数字的个数
//产生数字组
while (cDig[Password[iNum]] != '1')
{
Password[0] = j;
for (i=0; i<=iNum; i++)
{
//检测各个位数是否到终点
if (Password[i] == 10)
{
Password[i+1]++;
Password[i] = Password[i] % 10;
j %= 10;
}
}
//输出(若干个数一组,文件名为文件中的第一个数)
for (i=iNum-1; i>=0; i--)
{
Pass[iNum-1-i] = cDig[Password[i]];
}
Pass[iNum] = '\0';
//打开文件
if (iCount == 0)
{
//产生文件名,用存储的第一个数字组作为文件名
char filename[50];
sprintf(filename,"%s.dic\0",Pass);
char file[100];
strcpy(file,cFilepath);
strcat(file,filename);
if ((fp=fopen(file,"w")) == NULL)
{
printf("Can not open file for input!\n");
exit(1);
}
}
iCount++;
fprintf(fp,"%s\n",Pass);
j++;
if (iCount == iFileLength-1)
{
iCount = 0;
fclose(fp);
}
}
if (iCount != iFileLength-1)
{
fclose(fp);
}
delete []Password;
delete []Pass;
}
//小写字母产生密码
void CPasswordGeneration::LowercasePasswordGen(char cFilepath[],int iNum,int iFileLength)
{
int i;
//赋值a-z
for (i=97; i<=122; i++)
{
cLowercase[i-97] = i;
}
int *Password = new int[iNum+1];
char *Pass = new char[iNum+1];
for (i=0; i<=iNum; i++)
{
Password[i] = 0;
}
FILE *fp;
int j = 0;
iCount = 0;//用来统计写入文件的数字的个数
//产生数字组
while (cLowercase[Password[iNum]] != 'b')
{
Password[0] = j;
for (i=0; i<=iNum; i++)
{
//检测各个位数是否到终点
if (Password[i] == 26)
{
Password[i+1]++;
Password[i] = Password[i] % 26;
j %= 26;
}
}
//输出(若干个数一组,文件名为文件中的第一个数)
for (i=iNum-1; i>=0; i--)
{
Pass[iNum-1-i] = cLowercase[Password[i]];
}
Pass[iNum] = '\0';
//打开文件
if (iCount == 0)
{
//产生文件名,用存储的第一个数字组作为文件名
char filename[50];
sprintf(filename,"%s.dic\0",Pass);
char file[80];
strcpy(file,cFilepath);
strcat(file,filename);
if ((fp=fopen(file,"w")) == NULL)
{
printf("Can not open file for input!\n");
exit(1);
}
// Sleep(1000);
}
iCount++;
fprintf(fp,"%s\n",Pass);
j++;
if (iCount == iFileLength-1)
{
iCount = 0;
fclose(fp);
}
}
if (iCount != iFileLength-1)
{
fclose(fp);
}
delete []Password;
delete []Pass;
}
//大写字母产生密码
void CPasswordGeneration::CapitalPasswordGen(char cFilepath[],int iNum,int iFileLength)
{
int i;
//赋值A-Z
for (i=65; i<=90; i++)
{
cCapital[i-65] = i;
}
int *Password = new int[iNum+1];
char *Pass = new char[iNum+1];
for (i=0; i<=iNum; i++)
{
Password[i] = 0;
}
FILE *fp;
int j = 0;
iCount = 0;//用来统计写入文件的数字的个数
//产生数字组
while (cCapital[Password[iNum]] != 'B')
{
Password[0] = j;
for (i=0; i<=iNum; i++)
{
//检测各个位数是否到终点
if (Password[i] == 26)
{
Password[i+1]++;
Password[i] = Password[i] % 26;
j %= 26;
}
}
//输出(若干个数一组,文件名为文件中的第一个数)
for (i=iNum-1; i>=0; i--)
{
Pass[iNum-1-i] = cCapital[Password[i]];
}
Pass[iNum] = '\0';
//打开文件
if (iCount == 0)
{
//产生文件名,用存储的第一个数字组作为文件名
char filename[50];
sprintf(filename,"%s.dic\0",Pass);
char file[80];
strcpy(file,cFilepath);
strcat(file,filename);
if ((fp=fopen(file,"w")) == NULL)
{
printf("Can not open file for input!\n");
exit(1);
}
}
iCount++;
fprintf(fp,"%s\n",Pass);
j++;
if (iCount == iFileLength-1)
{
iCount = 0;
fclose(fp);
}
}
if (iCount != iFileLength-1)
{
fclose(fp);
}
delete []Password;
delete []Pass;
}
//数字小写字母产生密码
void CPasswordGeneration::DigLowercasePasswordGen(char cFilepath[],int iNum,int iFileLength)
{
int i;
//赋值0-9
for (i=48; i<=57; i++)
{
cDigLowercase[i-48] = i;
}
//赋值a-z
for (i=97; i<=122; i++)
{
cDigLowercase[i-97+10] = i;
}
int *Password = new int[iNum+1];
char *Pass = new char[iNum+1];
for (i=0; i<=iNum; i++)
{
Password[i] = 0;
}
FILE *fp;
int j = 0;
iCount = 0;//用来统计写入文件的数字的个数
//产生数字组
while (cDigLowercase[Password[iNum]] != '1')
{
Password[0] = j;
for (i=0; i<=iNum; i++)
{
//检测各个位数是否到终点
if (Password[i] == 36)
{
Password[i+1]++;
Password[i] = Password[i] % 36;
j %= 36;
}
}
//输出(若干个数一组,文件名为文件中的第一个数)
for (i=iNum-1; i>=0; i--)
{
Pass[iNum-1-i] = cDigLowercase[Password[i]];
}
Pass[iNum] = '\0';
//打开文件
if (iCount == 0)
{
//产生文件名,用存储的第一个数字组作为文件名
char filename[50];
sprintf(filename,"%s.dic\0",Pass);
char file[80];
strcpy(file,cFilepath);
strcat(file,filename);
if ((fp=fopen(file,"w")) == NULL)
{
printf("Can not open file for input!\n");
exit(1);
}
}
iCount++;
fprintf(fp,"%s\n",Pass);
j++;
if (iCount == iFileLength-1)
{
iCount = 0;
fclose(fp);
}
}
if (iCount != iFileLength-1)
{
fclose(fp);
}
delete []Password;
delete []Pass;
}
//数字小写字母大写字母产生密码
void CPasswordGeneration::DigLowercaseCapitalPasswordGen(char cFilepath[],int iNum,int iFileLength)
{
int i;
//赋值0-9
for (i=48; i<=57; i++)
{
cDigLowercaseCapital[i-48] = i;
}
//赋值a-z
for (i=97; i<=122; i++)
{
cDigLowercaseCapital[i-97+10] = i;
}
//赋值A-Z
for (i=65; i<=90; i++)
{
cDigLowercaseCapital[i-65+36] = i;
}
int *Password = new int[iNum+1];
char *Pass = new char[iNum+1];
for (i=0; i<=iNum; i++)
{
Password[i] = 0;
}
FILE *fp;
int j = 0;
iCount = 0;//用来统计写入文件的数字的个数
//产生数字组
while (cDigLowercaseCapital[Password[iNum]] != '1')
{
Password[0] = j;
for (i=0; i<=iNum; i++)
{
//检测各个位数是否到终点
if (Password[i] == 62)
{
Password[i+1]++;
Password[i] = Password[i] % 62;
j %= 62;
}
}
//输出(若干个数一组,文件名为文件中的第一个数)
for (i=iNum-1; i>=0; i--)
{
Pass[iNum-1-i] = cDigLowercaseCapital[Password[i]];
}
Pass[iNum] = '\0';
//打开文件
if (iCount == 0)
{
//产生文件名,用存储的第一个数字组作为文件名
char filename[50];
sprintf(filename,"%s.dic\0",Pass);
char file[80];
strcpy(file,cFilepath);
strcat(file,filename);
if ((fp=fopen(file,"w")) == NULL)
{
printf("Can not open file for input!\n");
exit(1);
}
}
iCount++;
fprintf(fp,"%s\n",Pass);
j++;
if (iCount == iFileLength-1)
{
iCount = 0;
fclose(fp);
}
}
if (iCount != iFileLength-1)
{
fclose(fp);
}
delete []Password;
delete []Pass;
}
//数字大写字母产生密码
void CPasswordGeneration::DigCapitalPasswordGen(char cFilepath[],int iNum,int iFileLength)
{
int i;
//赋值0-9
for (i=48; i<=57; i++)
{
cDigCapital[i-48] = i;
}
//赋值A-Z
for (i=65; i<=90; i++)
{
cDigCapital[i-65+10] = i;
}
int *Password = new int[iNum+1];
char *Pass = new char[iNum+1];
for (i=0; i<=iNum; i++)
{
Password[i] = 0;
}
FILE *fp;
int j = 0;
iCount = 0;//用来统计写入文件的数字的个数
//产生数字组
while (cDigCapital[Password[iNum]] != '1')
{
Password[0] = j;
for (i=0; i<=iNum; i++)
{
//检测各个位数是否到终点
if (Password[i] == 36)
{
Password[i+1]++;
Password[i] = Password[i] % 36;
j %= 36;
}
}
//输出(若干个数一组,文件名为文件中的第一个数)
for (i=iNum-1; i>=0; i--)
{
Pass[iNum-1-i] = cDigCapital[Password[i]];
}
Pass[iNum] = '\0';
//打开文件
if (iCount == 0)
{
//产生文件名,用存储的第一个数字组作为文件名
char filename[50];
sprintf(filename,"%s.dic\0",Pass);
char file[80];
strcpy(file,cFilepath);
strcat(file,filename);
if ((fp=fopen(file,"w")) == NULL)
{
printf("Can not open file for input!\n");
exit(1);
}
}
iCount++;
fprintf(fp,"%s\n",Pass);
j++;
if (iCount == iFileLength-1)
{
iCount = 0;
fclose(fp);
}
}
if (iCount != iFileLength-1)
{
fclose(fp);
}
delete []Password;
delete []Pass;
}
//小写字母大写字母产生密码
void CPasswordGeneration::LowercaseCapitalPasswordGen(char cFilepath[],int iNum,int iFileLength)
{
int i;
//赋值a-z
for (i=97; i<=122; i++)
{
cLowercaseCapital[i-97] = i;
}
//赋值A-Z
for (i=65; i<=90; i++)
{
cLowercaseCapital[i-65+26] = i;
}
int *Password = new int[iNum+1];
char *Pass = new char[iNum+1];
for (i=0; i<=iNum; i++)
{
Password[i] = 0;
}
FILE *fp;
int j = 0;
iCount = 0;//用来统计写入文件的数字的个数
//产生数字组
while (cLowercaseCapital[Password[iNum]] != 'b')
{
Password[0] = j;
for (i=0; i<=iNum; i++)
{
//检测各个位数是否到终点
if (Password[i] == 52)
{
Password[i+1]++;
Password[i] = Password[i] % 52;
j %= 52;
}
}
//输出(若干个数一组,文件名为文件中的第一个数)
for (i=iNum-1; i>=0; i--)
{
Pass[iNum-1-i] = cLowercaseCapital[Password[i]];
}
Pass[iNum] = '\0';
//打开文件
if (iCount == 0)
{
//产生文件名,用存储的第一个数字组作为文件名
char filename[50];
sprintf(filename,"%s.dic\0",Pass);
char file[80];
strcpy(file,cFilepath);
strcat(file,filename);
if ((fp=fopen(file,"w")) == NULL)
{
printf("Can not open file for input!\n");
exit(1);
}
}
iCount++;
fprintf(fp,"%s\n",Pass);
j++;
if (iCount == iFileLength-1)
{
iCount = 0;
fclose(fp);
}
}
if (iCount != iFileLength-1)
{
fclose(fp);
}
delete []Password;
delete []Pass;
}
int CPasswordGeneration::GetCount()
{
return iCount;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -