36.5. crypt — Unixパスワードをチェックする関数—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/crypt
移動先:案内検索

36.5。 陰窩 —Unixパスワードをチェックする機能

このモジュールは、 crypt(3)ルーチンへのインターフェイスを実装します。これは、変更されたDESアルゴリズムに基づく一方向ハッシュ関数です。 詳細については、Unixのマニュアルページを参照してください。 考えられる用途には、Pythonスクリプトがユーザーから入力されたパスワードを受け入れることを許可することや、辞書を使用してUnixパスワードを解読しようとすることが含まれます。

このモジュールの動作は、実行中のシステムでの crypt(3)ルーチンの実際の実装に依存することに注意してください。 したがって、現在の実装で使用可能な拡張機能は、このモジュールでも使用できます。

crypt.crypt(word, salt)

word は通常、プロンプトまたはグラフィカルインターフェイスで入力されたユーザーのパスワードになります。 salt は通常、ランダムな2文字の文字列であり、4096の方法のいずれかでDESアルゴリズムを混乱させるために使用されます。 salt の文字は、セット[./a-zA-Z0-9]に含まれている必要があります。 ハッシュされたパスワードを文字列として返します。文字列は、ソルトと同じアルファベットの文字で構成されます(最初の2文字はソルト自体を表します)。

いくつかの crypt(3)拡張機能では、 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 NotImplementedError(
                "Sorry, currently no support for shadow passwords")
        cleartext = getpass.getpass()
        return crypt.crypt(cleartext, cryptedpasswd) == cryptedpasswd
    else:
        return 1