什么命令行工具可以在 Windows 上生成密码?

什么命令行工具可以在 Windows 上生成密码?

我正在寻找具有类似用途的东西

passgen <length> <charset>

答案1

跨平台:使用 PERL

有一个PERL 密码生成器适用于 Windows、*nix、OS X 等。

Usage: genpass [-OPTIONS] LENGTH
-s, --symbols       Exclude symbol characters.
-n, --numbers       Exclude number characters.
-u, --uppercase     Exclude uppercase characters.
-l, --lowercase     Exclude lowercase characters.

在 Windows 上,检查其他答案。

Unix/Linux

查看该问题的答案:随机密码生成器:多个,在列中,在命令行上,在 Linux 中

答案2

取决于你想要的密码强度。当然,如果你不担心安全问题,那么echo %random%%random%在 cmd 或Get-Random -Minimum 100000000在 PowerShell 中就可以正常工作

使用 PowerShell,您有另一个更好的选择:调用GeneratePassword(int length, int numberOfNonAlphanumericCharacters)。例如,要生成一个长度为 12 个字符且至少包含 3 个特殊符号的密码,您可以这样调用它

# Just need to call once at the start of the script
[Reflection.Assembly]::LoadWithPartialName("System.Web")

[System.Web.Security.Membership]::GeneratePassword(12, 3)

MS TechNet 博客文章中有多篇与此相关的文章:

如果你不想使用 PowerShell,那么这是一个纯批处理解决方案


.NET Core 不支持 System.Web.dll,因此没有[System.Web.Security.Membership]::GeneratePassword()你必须编写一个自定义密码生成器,或者在网上找到一些可用的代码。下面是PowerShell Core 中的密码生成(6+)

$symbols = '!@#$%^&*'.ToCharArray()
$characterList = 'a'..'z' + 'A'..'Z' + '0'..'9' + $symbols
function GeneratePassword {
    param(
        [Parameter(Mandatory = $false)]
        [ValidateRange(12, 256)]
        [int] 
        $length = 14
    )
    
    do {
        $password = ""
        for ($i = 0; $i -lt $length; $i++) {
            $randomIndex = [System.Security.Cryptography.RandomNumberGenerator]::GetInt32(0, $characterList.Length)
            $password += $characterList[$randomIndex]
        }

        [int]$hasLowerChar = $password -cmatch '[a-z]'
        [int]$hasUpperChar = $password -cmatch '[A-Z]'
        [int]$hasDigit = $password -match '[0-9]'
        [int]$hasSymbol = $password.IndexOfAny($symbols) -ne -1

    }
    until (($hasLowerChar + $hasUpperChar + $hasDigit + $hasSymbol) -ge 3)
    
    $password | ConvertTo-SecureString -AsPlainText
}

也可以看看

你也可以安装密码生成器模块

$ModuleName = "RandomPasswordGenerator"
Get-Module -Name $ModuleName -ListAvailable | Uninstall-Module
Install-Module $ModuleName -Force -Confirm:$false

答案3

查看 SecurePassword Kit命令行密码生成器(存档链接)。其语法如下:

gspk.exe /g [-l:password_length] [-a:charset_options] 


只是为了澄清:gspk.exe 是 GUI 程序的可执行文件,但它也可以通过使用参数调用在命令行中使用。

答案4

好吧,虽然有点晚了,但还是有帮助的。我希望如此。

TL:DR 那么让我与你分享一下https://github.com/the-j0k3r/batch-101并查看简单密码生成器

很久以前,我编写了一个密码生成器,它允许我生成熵高于 %random%(因为 %random% 实际上根本不是随机的)并且在 Windows 上长度任意的密码,它还允许将密码保存到文件中,每个密码都有一个引用,因此理论上您可以将该文件保存在外部驱动器上,以便于参考并增加安全性。

相关内容