使用 php,java,ts,js,go,c,c++,c#,python,shell,bat 实现 一个随机密码生成 包含 大小写字母 阿拉伯数字 长度可控 16~64位密码

闲得无聊,让ai给我写了一堆代码,我可真的闲得无聊啊~

问题

分别使用 php,java,ts,js,go,c,c++,c#,python,shell,bat 实现 一个随机密码生成 包含 大小写字母 阿拉伯数字 长度可控 16~64位密码

回答

以下是使用不同编程语言实现随机密码生成器的示例代码:

PHP:

function generateRandomPassword($length) {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $password = '';

    for ($i = 0; $i < $length; $i++) {
        $index = mt_rand(0, strlen($chars) - 1);
        $password .= $chars[$index];
    }

    return $password;
}

$length = mt_rand(16, 64);
$password = generateRandomPassword($length);
echo $password;

Java:

import java.util.Random;

public class RandomPasswordGenerator {
    public static String generateRandomPassword(int length) {
        String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuilder password = new StringBuilder();

        Random random = new Random();
        for (int i = 0; i < length; i++) {
            int index = random.nextInt(chars.length());
            password.append(chars.charAt(index));
        }

        return password.toString();
    }

    public static void main(String[] args) {
        int length = new Random().nextInt(64 - 16 + 1) + 16;
        String password = generateRandomPassword(length);
        System.out.println(password);
    }
}

TypeScript:

function generateRandomPassword(length: number): string {
  const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  let password = '';

  for (let i = 0; i < length; i++) {
    const index = Math.floor(Math.random() * chars.length);
    password += chars[index];
  }

  return password;
}

const length = Math.floor(Math.random() * (64 - 16 + 1)) + 16;
const password = generateRandomPassword(length);
console.log(password);

JavaScript:

function generateRandomPassword(length) {
  const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  let password = '';

  for (let i = 0; i < length; i++) {
    const index = Math.floor(Math.random() * chars.length);
    password += chars[index];
  }

  return password;
}

const length = Math.floor(Math.random() * (64 - 16 + 1)) + 16;
const password = generateRandomPassword(length);
console.log(password);

Go:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func generateRandomPassword(length int) string {
    chars := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    password := ""

    rand.Seed(time.Now().UnixNano())
    for i := 0; i < length; i++ {
        index := rand.Intn(len(chars))
        password += string(chars[index])
    }

    return password
}

func main() {
    length := rand.Intn(64-16+1) + 16
    password := generateRandomPassword(length)
    fmt.Println(password)
}

C:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char* generateRandomPassword(int length) {
    char chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    char* password = (char*)malloc((length + 1) * sizeof(char));

    srand(time(NULL));
    for (int i = 0; i < length; i++) {
        int index = rand() % (sizeof(chars) - 1);
        password[i] = chars[index];
    }
    password[length] = '\0';

    return password;
}

int main() {
    int length = rand() % (64 - 16 + 1) + 16;
    char* password = generateRandomPassword(length);
    printf("%s\n", password);
    free(password);

    return 0;
}

C++:

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>

std::string generateRandomPassword(int length) {
    std::string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    std::string password = "";

    srand(time(NULL));
    for (int i = 0; i < length; i++) {
        int index = rand() % chars.length();
        password += chars[index];
    }

    return password;
}

int main() {
    int length = rand() % (64 - 16 + 1) + 16;
    std::string password = generateRandomPassword(length);
    std::cout << password << std::endl;

    return 0;
}

C#:

using System;

public class RandomPasswordGenerator
{
    public static string GenerateRandomPassword(int length)
    {
        string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        char[] password = new char[length];

        Random random = new Random();
        for (int i = 0; i < length; i++)
        {
            int index = random.Next(chars.Length);
            password[i] = chars[index];
        }

        return new string(password);
    }

    public static void Main(string[] args)
    {
        int length = new Random().Next(16, 64 + 1);
        string password = GenerateRandomPassword(length);
        Console.WriteLine(password);
    }
}

Python:

import random
import string

def generate_random_password(length):
    chars = string.ascii_letters + string.digits
    password = ''.join(random.choice(chars) for _ in range(length))
    return password

length = random.randint(16, 64)
password = generate_random_password(length)
print(password)

Shell:

#!/bin/bash

generate_random_password() {
    chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    password=""

    for ((i=0; i<$1; i++)); do
        index=$((RANDOM % ${#chars}))
        password+=${chars:index:1}
    done

    echo $password
}

length=$((RANDOM % (64 - 16 + 1) + 16))
password=$(generate_random_password $length)
echo $password

Batch:

@echo off

setlocal EnableDelayedExpansion

set "chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
set "password="

for /L %%i in (1,1,%random%) do (
    set /A "index=!random! %% 62"
    for /F %%j in ("!index!") do set "char=!chars:~%%j,1!"
    set "password=!password!!char!"
)

set /A "length=%random% %% (64 - 16 + 1) + 16"
set "password=!password:~0,%length%!"

echo %password%

请注意,这些只是简单的示例代码,生成的密码可能不够安全。如果您需要更强大和安全的密码生成器,建议使用专门的密码库或函数。