パスワード リセットの検証プロセスを作成しようとしています。使用したのはエポック タイムの 2 つの値で、ユーザーの古いパスワード (pbkdf2) をキーとして使用したいのですが、
ASCII以外の文字を取得したくないので、SimpleEncodeライブラリを使用しました。これはキーが使用されたBASE64のみであるため高速であるためですが、問題はパスワードが長すぎることです(196文字)ので、長いキーを取得します!
私がやったことは結果を分割することcode = simpleencode.encode(key,asci)[::30]
ですが、これは一意ではありません!
それがどのように機能するかを理解するために、Facebookのリセットプロセスを試しましたが、与えられたのは数字です! では、このプロセスがどのように機能するかというと、誰かが誰かのパスワードをリセットするためのリンクを偽造するのを困難にするために鍵を使用していませんか?
更新: アルゴリズムの仕組み:
1-エポッシュを使用して時間を取得するtime.time()
2- (URL に使用する) エポック時間の Base64 とエポック時間値 + キーを生成します。このキーは PBKDF2(パスワード) です。
3- URL www.example.com/reset/user/Base64(time.time()) を生成し、この URL とsimpleencode.encode(key,asci)[::30]
4- ユーザーが URL をクリックすると、生成されたコードが入力されます。この生成されたコードが URL と一致する場合は、パスワードを変更させます。そうでない場合は、URL を忘れてしまいます。