16.5 crypt -- Unix パスワードをチェックするための関数

Unixプラットフォームで利用できます。

このモジュールは DES アルゴリズムに基づいた 一方向ハッシュ関数である crypt(3) ルーチンを実装しています。詳細については Unix マニュアルページ を参照してください。このモジュールは、Python スクリプトが ユーザから入力されたパスワードを受理できるようにしたり、Unix パスワードに (脆弱性検査のための) 辞書攻撃を試みるのに使えます。

このモジュールは実行環境のcrypt(3)の実装に依 存しています。そのため、現在の実装で利用可能な拡張を、このモジュールで もそのまま利用できます。

crypt( word, salt)
word は通常はユーザのパスワードで、プロンプトやグラフィカル インタフェースからタイプ入力されます。salt は通常ランダムな 2 文字からなる文字列で、DES アルゴリズムに 4096 通りのうち 1 つの 方法で外乱を与えるために使われます。salt に使う文字は集合 [./a-zA-Z0-9] の要素でなければなりません。 ハッシュされたパスワードを文字列として返します。パスワード文字列 は salt と同じ文字集合に含まれる文字からなります (最初の 2 文字は salt 自体です).

いくつかの拡張されたcrypt(3)は異なる値と salt の長さを許しているので、パスワードをチェックする際にはcrypt されたパスワード文字列全体をsaltとして渡すよう勧めます。

典型的な使用例のサンプルコード:

import crypt, getpass, pwd

def login():
    username = raw_input('Python login:')
    cryptedpasswd = pwd.getpwnam(username)[1]
    if cryptedpasswd:
        if cryptedpasswd == 'x' or cryptedpasswd == '*': 
            raise "Sorry, currently no support for shadow passwords"
        cleartext = getpass.getpass()
        return crypt.crypt(cleartext, cryptedpasswd) == cryptedpasswd
    else:
        return 1
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。