PowerShell Core ( 6 +)におけるパスワード生成
7129 ワード
PowerShell(Windows PowerShellのように)で、ユーザーパスワードを生成する一般的に参照される方法は、システムから
フレットノット.
箱の中にビルトインパスワード生成方法がない間、それは我々自身を書くために多くをとりません.
強いランダムパスワードを生成するキーはcryptographic random number generatorを使用することです.
ミートGet-Random.
一般的なパスワード制限を満たすために以下の要件を満たすパスワードを生成しましょう.少なくとも12文字長い は、次の4から3を必要とします. 小文字です. 大文字です. 数(0 - 9). シンボル(
指定された長さ、およびパスワードが制限を満たすまでしようとし続ける.
このスクリプトがあなたのニーズのためにあまりに遅いならば、here is a slightly altered faster version(マックブックプロ2015の上で10 msの代わりに~ 0.4 ms).
Membership.GeneratePassword
メソッドを呼び出すことです.Webアセンブリ.Add-Type -AssemblyName System.Web
# Generate random password
[System.Web.Security.Membership]::GeneratePassword(8,2)
これはすべてのよくて良いですが、System.Web
は一部ではありません.PowerShellコア( 6 +)が依存するネットコア.フレットノット.
箱の中にビルトインパスワード生成方法がない間、それは我々自身を書くために多くをとりません.
強いランダムパスワードを生成するキーはcryptographic random number generatorを使用することです.
Don't roll your own crypto
ミートGet-Random.
-SetSeed
パラメタがない場合、Get-Random
は暗号化RandomNumberGeneratorからその種を取ります.そして、それは我々のシナリオに適しています.一般的なパスワード制限を満たすために以下の要件を満たすパスワードを生成しましょう.
!@#$%^&*
).$symbols = '!@#$%^&*'.ToCharArray()
$characterList = 'a'..'z' + 'A'..'Z' + '0'..'9' + $symbols
function GeneratePassword {
param(
[ValidateRange(12, 256)]
[int]
$length = 14
)
do {
$password = -join (0..$length | % { $characterList | Get-Random })
[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
}
論理は、許可されたリストからランダムに文字を選択することです指定された長さ、およびパスワードが制限を満たすまでしようとし続ける.
このスクリプトがあなたのニーズのためにあまりに遅いならば、here is a slightly altered faster version(マックブックプロ2015の上で10 msの代わりに~ 0.4 ms).
Reference
この問題について(PowerShell Core ( 6 +)におけるパスワード生成), 我々は、より多くの情報をここで見つけました https://dev.to/onlyann/user-password-generation-in-powershell-core-1g91テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol