理解するように命じられたシステムをリバース エンジニアリングしています。システムは、トークンと半ランダム化された [1] タイムスタンプ (ソルトとして) と未知のハッシュ関数を使用して、認証用のランダム キーを生成します。
生成される文字列の長さは 64 文字で、ハッシュにはパターンがあるようです。例(この質問は理論であるため、関係のない長さの架空の入力と出力に基づいています):
salt: 135407067754316
token: aaaa.bbbb.cccc.dddd
これにより、次が生成されます。
hash: d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e
そして、塩を変更します:
salt: 13540707209819
token: aaaa.bbbb.cccc.dddd
プロデュース:
hash: d41d9g838fddb275e9800123ecf8427ed41d9g838fddb275e9800123ecf8427e
これは、最初のハッシュ (最初の 3 文字が常に一致する) に似ています。生成の唯一の違いはキー (半ランダム化されたタイムスタンプ) です。ソルトとしてランダム化されたタイムスタンプ。
質問暗号化の方法や使用している機能を絞り込むにはどうすればよいですか? 必要な数のハッシュを (キーとトークンを使用して) 生成できますが、選択したトークンとキーを使用してハッシュを生成することはできません。結果の長さは 64 文字です。
ソルト、トークン、および結果の例が 100、200、500、1000、10000、100000 ある場合、生成方法をブルート フォースできる技術は存在しますか?
[1] 半ランダム化とは、現在のタイムスタンプ (例: 1354068826) を取得し、最後に長さ 5 のランダムな数字を追加して、135406882613951 のようなものを作成することを意味します)。
最後の注意として、暗号化、ハッシュ、またはセキュリティについて、基本的な考え方 (値とソルトの入力、ハッシュの取得) 以外は何も知りません。