35.5。 陰窩 —Unixパスワードをチェックする機能
ソースコード: :source: `Lib / crypt.py`
このモジュールは、 crypt(3)ルーチンへのインターフェイスを実装します。これは、変更されたDESアルゴリズムに基づく一方向ハッシュ関数です。 詳細については、Unixのマニュアルページを参照してください。 考えられる用途には、実際のパスワードを保存せずにパスワードを確認できるようにハッシュされたパスワードを保存することや、辞書を使用してUnixパスワードを解読しようとすることが含まれます。
このモジュールの動作は、実行中のシステムでの crypt(3)ルーチンの実際の実装に依存することに注意してください。 したがって、現在の実装で使用可能な拡張機能は、このモジュールでも使用できます。
35.5.1。 ハッシュメソッド
バージョン3.3の新機能。
crypt モジュールは、ハッシュメソッドのリストを定義します(すべてのメソッドがすべてのプラットフォームで使用できるわけではありません)。
- crypt.METHOD_SHA512
- 16文字のソルトと86文字のハッシュを使用するModularCryptFormatメソッド。 これが最強の方法です。
- crypt.METHOD_SHA256
- 16文字のソルトと43文字のハッシュを使用する別のModularCryptFormatメソッド。
- crypt.METHOD_MD5
- 8文字のソルトと22文字のハッシュを使用する別のModularCryptFormatメソッド。
- crypt.METHOD_CRYPT
- 2文字のソルトと13文字のハッシュを使用する従来の方法。 これは最も弱い方法です。
35.5.2。 モジュール属性
バージョン3.3の新機能。
- crypt.methods
crypt.METHOD_*
オブジェクトとして使用可能なパスワードハッシュアルゴリズムのリスト。 このリストは、最も強いものから最も弱いものへとソートされています。
35.5.3。 モジュール機能
crypt モジュールは、次の関数を定義します。
- crypt.crypt(word, salt=None)
word は通常、プロンプトまたはグラフィカルインターフェイスで入力されたユーザーのパスワードになります。 オプションの salt は、 mksalt()から返される文字列、
crypt.METHOD_*
値の1つ(すべてのプラットフォームですべてが使用できるわけではありません)、またはこの関数によって返される、saltを含む完全に暗号化されたパスワード。 salt が指定されていない場合、最も強力なメソッドが使用されます( methods()によって返されます)。パスワードの確認は通常、プレーンテキストのパスワードを word として渡し、前の crypt()呼び出しの完全な結果を渡すことによって行われます。これは、この呼び出しの結果と同じである必要があります。 。
salt (ランダムな2文字または16文字の文字列、メソッドを示すために
$digit$
のプレフィックスが付いている可能性があります)。これは、暗号化アルゴリズムを混乱させるために使用されます。 salt の文字は、$digit$
の前に付けられるModularCrypt Formatを除いて、セット[./a-zA-Z0-9]
に含まれている必要があります。ハッシュされたパスワードを文字列として返します。文字列は、saltと同じアルファベットの文字で構成されます。
いくつかの crypt(3)拡張機能では、 salt のサイズが異なるさまざまな値が許可されるため、パスワードを確認するときは、完全に暗号化されたパスワードをソルトとして使用することをお勧めします。
バージョン3.3で変更: salt の文字列に加えて
crypt.METHOD_*
値を受け入れます。
- crypt.mksalt(method=None)
指定されたメソッドのランダムに生成されたソルトを返します。 method が指定されていない場合、 methods()によって返される利用可能な最強のメソッドが使用されます。
戻り値は、
crypt.METHOD_CRYPT
の場合は2文字、$digit$
で始まる19文字、およびセット[./a-zA-Z0-9]
の16文字のランダム文字のいずれかの文字列であり、として渡すのに適しています。 crypt()への salt 引数。バージョン3.3の新機能。
35.5.4。 例
典型的な使用法を示す簡単な例(タイミング攻撃への露出を制限するには、一定時間の比較操作が必要です。 hmac.compare_digest()はこの目的に適しています):
利用可能な最も強力な方法を使用してパスワードのハッシュを生成し、元の方法と照合するには、次のようにします。