📜  C语言中的随机密码生成器(1)

📅  最后修改于: 2023-12-03 15:14:27.098000             🧑  作者: Mango

C语言中的随机密码生成器

随机密码生成器是一款可以随机生成密码的工具,主要用于帮助用户创建更加安全的密码。使用C语言编写的随机密码生成器可以快速生成各类复杂度的密码,同时也带有一定的学习参考价值。

功能介绍
  • 随机生成数字、字母、符号等字符组合生成密码
  • 可以指定密码长度,根据需求生成符合指定长度要求的密码
  • 可以根据需要调整不同字符的生成概率,实现更加灵活的密码生成
  • 简洁易懂的代码结构,方便扩展和修改
使用说明

1.本程序使用C语言编写,需要提前配置C语言环境。

2.程序中所定义的常量可以根据实际需求进行修改,以达到更好的生成效果。

3.通过修改生成概率可以调整不同字符的出现频率。

代码示例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define PASSWORD_LENGTH 12 // 密码长度
#define DIGIT_PROBABILITY 40 // 数字生成概率%
#define UPPER_PROBABILITY 30 // 大写字母生成概率%
#define LOWER_PROBABILITY 30 // 小写字母生成概率%
#define SYMBOL_PROBABILITY 10 // 符号生成概率%

int main() {
    // 定义生成字符的候选集合
    char digit[] = "0123456789";
    char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char lower[] = "abcdefghijklmnopqrstuvwxyz";
    char symbol[] = "!@#$%^&*()_+-=[]{}|;':\",./<>?`~";
    char pool[256];
    int poolCount = 0;
    // 根据生成概率计算每个字符的生成上限
    int digitMaxCount = PASSWORD_LENGTH * DIGIT_PROBABILITY / 100;
    int upperMaxCount = PASSWORD_LENGTH * UPPER_PROBABILITY / 100;
    int lowerMaxCount = PASSWORD_LENGTH * LOWER_PROBABILITY / 100;
    int symbolMaxCount = PASSWORD_LENGTH * SYMBOL_PROBABILITY / 100;
    // 根据生成上限构建字符候选池
    for (int i = 0; i < digitMaxCount; i++) {
        pool[poolCount++] = digit[rand() % (sizeof(digit) - 1)];
    }
    for (int i = 0; i < upperMaxCount; i++) {
        pool[poolCount++] = upper[rand() % (sizeof(upper) - 1)];
    }
    for (int i = 0; i < lowerMaxCount; i++) {
        pool[poolCount++] = lower[rand() % (sizeof(lower) - 1)];
    }
    for (int i = 0; i < symbolMaxCount; i++) {
        pool[poolCount++] = symbol[rand() % (sizeof(symbol) - 1)];
    }
    // 如果候选池大小小于需要的密码长度,进行字符补足
    while (poolCount < PASSWORD_LENGTH) {
        pool[poolCount++] = pool[rand() % poolCount];
    }
    // 打乱字符池中的字符,获得随机密码
    for (int i = poolCount - 1; i > 0; i--) {
        int j = rand() % (i + 1);
        char temp = pool[i];
        pool[i] = pool[j];
        pool[j] = temp;
    }
    // 打印生成的密码
    printf("Password: %s\n", pool);
    return 0;
}
总结

随机密码生成器是一款简单、实用的工具,可以帮助用户生成更加安全的密码,防止密码被猜测和破解。通过学习此程序的实现原理,可以更加深入地理解随机数生成和字符操作等 C 语言基础知识。