密码生成 API 源码

<?php

header('Content-Type: application/json');

/**
 * 生成密码
 *
 * @param int $length 密码长度
 * @param bool $lowercase 包含小写字母
 * @param bool $uppercase 包含大写字母
 * @param bool $numbers 包含数字
 * @param bool $symbols 包含特殊字符
 * @return string 生成的密码
 */
function generatePassword($length = 12, $lowercase = true, $uppercase = true, $numbers = true, $symbols = true) {
    // 字符集合
    $characterSets = [];
    
    if ($lowercase) {
        $characterSets[] = 'abcdefghijklmnopqrstuvwxyz';
    }
    
    if ($uppercase) {
        $characterSets[] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    }
    
    if ($numbers) {
        $characterSets[] = '0123456789';
    }
    
    if ($symbols) {
        $characterSets[] = '!@#$%^&*()_+[]{}|;:,.<>?';
    }
    
    // 至少选择一个字符集
    if (empty($characterSets)) {
        $characterSets[] = 'abcdefghijklmnopqrstuvwxyz';
    }

    // 将字符集合合并为一个字符串
    $characters = implode('', $characterSets);
    
    // 生成密码
    $password = '';
    $charactersLength = strlen($characters);
    for ($i = 0; $i < $length; $i++) {
        $password .= $characters[rand(0, $charactersLength - 1)];
    }
    
    return $password;
}

// 获取请求中的参数
$passwordLength = isset($_GET['length']) ? max(8, min(128, (int)$_GET['length'])) : 12; // 密码长度范围在8到128之间
$lowercase = isset($_GET['lowercase']) ? filter_var($_GET['lowercase'], FILTER_VALIDATE_BOOLEAN) : true;
$uppercase = isset($_GET['uppercase']) ? filter_var($_GET['uppercase'], FILTER_VALIDATE_BOOLEAN) : true;
$numbers = isset($_GET['numbers']) ? filter_var($_GET['numbers'], FILTER_VALIDATE_BOOLEAN) : true;
$symbols = isset($_GET['symbols']) ? filter_var($_GET['symbols'], FILTER_VALIDATE_BOOLEAN) : true;

// 生成密码
$password = generatePassword($passwordLength, $lowercase, $uppercase, $numbers, $symbols);

// 返回 JSON 格式的响应
echo json_encode(['code' => 0, 'password' => $password]);
?>

端点

/generate-password.php

请求参数

请求方法: GET

  • length (可选): 密码长度,默认为 12。
  • lowercase (可选): 包含小写字母,值为 true 或 false,默认为 true
  • uppercase (可选): 包含大写字母,值为 true 或 false,默认为 true
  • numbers (可选): 包含数字,值为 true 或 false,默认为 true
  • symbols (可选): 包含特殊字符,值为 true 或 false,默认为 true

示例请求

/generate-password.php?length=16&lowercase=true&uppercase=true&numbers=true&symbols=true

示例响应

{ "password": "A5b#vE!9rP2uQ@Kt" }

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容