3

私はPBKDF2を使用していますが、これはBCryptにも同様に当てはまります。

妥当な反復回数でパスワードをハッシュすると、0.5秒間簡単にブロックできます。これをプロセスから取り除くための軽量な方法は何ですか?この操作のためだけにCeleryやGearmanのようなものをセットアップするのは気が進まない。

4

1 に答える 1

6

スレッドを使用できます。これは竜巻をブロックしません。パスワードをハッシュするハンドラーがあるとします。次に、2つの関連するメソッドは次のようになります。

import threading

def on_message(self, message):
    # pull out user and password from message somehow
    thread = threading.Thread(target=self.hash_password, args=(user, password))
    thread.start()


def hash_password(self, user, password):
    # do the hash and save to db or check against hashed password

メソッドでスレッドが終了するのを待ってからon_message応答を書き込むか、応答を送信する必要がない場合は、スレッドを終了させて​​結果をhash_passwordメソッドに保存することができます。

スレッドが終了するのを待つ場合は、その方法に注意する必要があります。time.sleepブロックするので、代わりにトルネードの非ブロック待機を使用する必要があります。

于 2012-10-28T11:37:37.333 に答える