パスワード生成スクリプト

今日は小ネタです。

どこかのサイトに登録するとパスワードを求められることが多いと思います。ブラウザの自動生成機能を使っても良いのですが、別のブラウザで使う時にコピーし忘れてしまったり、使えない文字が入っているのに平気で設定しようとしたりして、不便な時があります。

今回はパスワードを自動生成するスクリプトを python で作成します。

# -*- coding: utf-8 -*-

import secrets
import sys

num = 12
if len(sys.argv) > 1:
    num = int(sys.argv[1])

p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
pa = [p[i:i+1] for i in range(len(p))]
x = [secrets.choice(pa) for i in range(num)]
print("".join(x))

ライブラリは secrets を使用します。こちらの方が /dev/urandom を使った類推しにくい結果が得られるようです。詳細はこちらの記事(英語)を参照してください。

文字列長はデフォルト12文字としました。

簡易なプログラムなので、稀に大文字・小文字が混じっていない、数字が入っていない等の現象が発生しますが、何回か実行してみてよさげな文字列を拾うのが良いと思います。

しかし、未だにログイン時にパスワードを求めるのではなく、ssh のように DH 鍵交換するとか、TLS のように証明書ベースにするとかもっとスマートな方向にならないのでしょうか。

投稿者について
みのしす

小さいときは科学者になろうとしたのに、その時にたまたま身に着けたプログラミングで未だに飯を食っているしがないおじさんです。(年齢的にはもうすぐおじいさん)

1 throughts on "パスワード生成スクリプト"

  1. 文字列を分解して文字リストを作る部分が 3.8.x だと機能しませんでした。全バージョンで動作するよう書き換えました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です