⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 passwordgeneration.cpp

📁 按照不同的组合生成密码
💻 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 + -