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