Linux / Mac(ターミナル)
OpenSSLを使う方法が手軽です。
openssl rand -base64 16
/dev/urandom を使う方法もあります。
tr -dc A-Za-z0-9 </dev/urandom | head -c 16
Windows(PowerShell)
-join ((33..126) | Get-Random -Count 16 | % {[char]$_})Python
標準ライブラリの secrets モジュールを使うことで、暗号学的に安全な乱数を生成できます(random モジュールはセキュリティ用途には不適切です)。
import secrets import string alphabet = string.ascii_letters + string.digits + string.punctuation password = ''.join(secrets.choice(alphabet) for _ in range(16)) print(password)
PHP
random_bytes() や random_int() を使うことで、暗号学的に安全な乱数を生成できます。
function generatePassword($length = 16) {
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$password = '';
for ($i = 0; $i < $length; $i++) {
$password .= $chars[random_int(0, strlen($chars) - 1)];
}
return $password;
}
echo generatePassword(16);Basic認証用パスワードの生成
Webサーバーの Basic認証(.htpasswd)で使うパスワードも、同じ考え方で作成できます。Apacheのhtpasswdコマンドを使う場合の例です。
htpasswd -c /etc/apache2/.htpasswd ユーザー名
コマンド実行時にパスワードの入力を求められるため、事前に当サイトの記号なしパスワード生成ツールなどで作成した文字列を貼り付けるとスムーズです。設定ファイルの記法によっては特定の記号がエラーの原因になることがあるため、迷った場合は英数字のみの構成がおすすめです。同様の考え方は、WordPressの管理画面パスワードやFTP/SSHアカウントのパスワード設定にもそのまま応用できます。
専用ツールを使うメリット
コマンドやコードを都度書くのは手間がかかります。当サイトのパスワード生成ツールは、当サイトのコアロジックも同様に crypto.getRandomValues という暗号学的に安全な乱数APIを使用しており、ブラウザからワンクリックで同等の安全性のパスワードを生成できます。複数個必要な場合は一括生成ツールも便利です。
テストデータ・APIキー生成にも
記号なしのランダムな文字列(例:APIキー風IDやテストデータ)にはランダム文字列生成ツールが便利です。英大文字・小文字・数字の組み合わせを、1〜128文字の範囲で1個から最大1000個まで一気に生成できます。「似ている文字を除外(I l 1 O 0 o |)」のオプションをオンにすると、印刷・OCRで読み間違いにくい識別子を作れます。