密码生成器

该博客展示了一个用C语言编写的密码生成程序。程序提供多种字符集选项,包括不同大小写字母、数字及特殊字符组合,用户可选择字符集和密码长度,程序会根据选择生成相应强度的密码,还会对过短密码给出提示。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void very_easy_password(int);
void very_easy2_password(int);
void easy_password(int);
void medium_password(int);
void hard_password(int);
void hard2_password(int);
void very_hard_password(int);
void extreme_password(int);

int main(void)
{
    printf("PWgen.exe, password generator, Copyright (C) 2004 Scorpius");
    printf("/n/nPWgen.exe is free software; you can redistribute it and/or modify");
    printf("/nit under the terms of the GNU General Public License as published by");
    printf("/nthe Free Software Foundation; either version 2 of the License.");
    printf("/n/nPWgen.exe is distributed in the hope that it will be useful,");
    printf("/nbut WITHOUT ANY WARRANTY; without even the implied warranty of");
    printf("/nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the");
    printf("/nGNU General Public License for more details.");
    printf("/n/nYou should have received a copy of the GNU General Public License");
    printf("/nalong with this program; if not, write to the Free Software");
    printf("/nFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA/n/n");
   
    char again='y';
    while(again == 'y' || again=='Y')
    {
        int password_length=0;
        int choice=0;
        printf("/n1: (a-z)/t/t/t/t/tvery easy password");
        printf("/n2: (A-Z)/t/t/t/t/tvery easy password");
        printf("/n3: (a-z,A-Z)/t/t/t/t/teasy password");
        printf("/n4: (a-z,0-9)/t/t/t/t/tmedium password");
        printf("/n5: (A-Z,a-z,0-9)/t/t/t/thard password");
        printf("/n6: (a-z,0-9, // ] [ ^ _ )/t/t/thard password");
        printf("/n7: ( ! /" # $ % ' ( * ) + , - . /  ,a-z,0-9)/tvery hard password");
        printf("/n8: full keyboard characters (except space), almost impossible to crack/n/n");
        while (choice<1 || choice>8)
        {
                printf("Enter the characterset you wish to use: ");
                scanf("%d",&choice);
        }   
        while((password_length<1)||(password_length>256))
        {
                printf("Enter the length of the password (max 256): ");
                scanf("%d",&password_length);
                if (password_length<8)
                {
                    printf("/n/nChoosen password is only %d characters long!",password_length);
                    printf("/nRemember, a password is as strong as its length!");
                    printf("/nThe above gradations only apply with a minimal password length of 8./n");
                }       
                   
        }
        printf("/nYour password is: ");   
        switch(choice)
        {
                case 1:
                        very_easy_password(password_length);
                        break;
                case 2:
                        very_easy2_password(password_length);
                        break;
                case 3:
                        easy_password(password_length);
                        break;
                case 4:
                        medium_password(password_length);
                        break;
                case 5:
                        hard_password(password_length);
                        break;
                case 6:
                        hard2_password(password_length);
                        break;
                case 7:
                        very_hard_password(password_length);
                        break;
                case 8:
                        extreme_password(password_length);
                        break;
               default:
                        break;
        }
        printf("/nWant to generate another password (y/n)?");
        again=getch();
        printf("/n/n");
    }
    printf("Thank you for using my program, for questions/comments contact me at");
    printf("/nscorpius_unknown@yahoo.com");
    printf("/nPress any key to exit");
    char any=getch();
    return 0;   
}



/*(a-z) very easy password*/

void very_easy_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=97 && cha<=122))
        {
           printf("%c",cha);
           length--;
        }
    }
}

/* (A-Z) also very easy password */
void very_easy2_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=65 && cha<=90))
        {
           printf("%c",cha);
           length--;
        }
    }
}

/*(A-Z,a-z), easy password*/

void easy_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=65 && cha<=90) || (cha>=97 && cha<=122))
        {
           printf("%c",cha);
           length--;
        }
    }
}

/*(a-z,0-9) medium password*/

void medium_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=48 && cha<=57) ||(cha>=97 && cha<=122))
        {
           printf("%c",cha);
           length--;
        }
    }
}


/*(A-Z,a-z,0-9) hard password*/

void hard_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=48 && cha<=57) || (cha>=65 && cha<=90) || (cha>=97 && cha<=122))
        {
           printf("%c",cha);
           length--;
        }
    }
}

/*(a-z,0-9, / ] [ ^ _ ) hard password*/

void hard2_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=48 && cha<=57) || (cha>=91 && cha<=95) || (cha>=97 && cha<=122))
        {
           printf("%c",cha);
           length--;
        }
    }
}

/*( ! " # $ % ' ( * ) + , - . /  ,a-z,0-9) very hard password*/

void very_hard_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=48 && cha<=57) || (cha>=65 && cha<=90) || (cha>=97 && cha<=122))
        {
           printf("%c",cha);
           length--;
        }
    }
}

/*full keyboard characters (except space), almost impossible to crack */

void extreme_password(length)
{
    srand(time(NULL));
    while (length>0)
    {
        int cha;
        cha=rand()%128;
        if((cha>=33 && cha<=126))
        {
           printf("%c",cha);
           length--;
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值