1

は、あなたが今、私は(JS /擬似コードで)このように、このハッシュにタイムスタンプを元の文字列からdont downvote my stupid questionタイムスタンプハッシュはどのように機能しますか?

を作成された既存のハッシュg84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqaがあるとします。

var hash = 'g84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqa'; 
var today= new Date(); // 2017-10-19 

var timestamped = hash + today; 

var new_hash = SHA256(timestamped); 

// new_hash is 34t346tf3847tr8qrot3r8q248rtbrq4brtqti4t 

私は私を確認したい場合元の文字列は、私が行うことができます。

var verified = goodHash('dont downvote my stupid question',hash); // true 

私は私が行うことができますタイムスタンプ付きバージョンを確認したい場合

var original_hash = 'g84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqa'; 
var today = '2017-10-19'; 
var verified = goodHash(original_hash+today, timestamped_hash); // true 

しかし、私は、タイムスタンプに対する元の文字列を検証しようとした場合、私はカント:

​​

は今、この元の文字列がハッシュされ、nの反復のために何度も何度もタイムスタンプされているとします。

私はn-1thハッシュを持っていれば、n-1thタイムスタンプを確認することしかできません。

しかし、元の文字列がdont downvote my stupid questionで、ithのタイムスタンプを確認したい場合は、0 < i < nとなります。

基本的に、私は私がの知識を持っている必要があることを文字列は、(関係なく、それは文字列の長さを増加させることなく、をタイムスタンプされている可能性が何回、指定された日付とタイムスタンプされたかどうかを確認したいですあまりにも - の長さの増加はnが成長するので無限に近づくでしょう)。

これも可能ですか?ハッシュはこの情報をすべて含むことができますか?ここに関与数学が

+0

私の腸は、あなたが元の文字列を知っている必要がありますし、(i番目の1まで)すべてのタイムスタンプは、i番目のハッシュを生成することを私に伝えます。 –

答えて

0

見てみましょう:

まず、あなたが入力文字列sとタイムスタンプのシーケンスtを持っています。私は、ithタイムスタンプを示すのにt[i]を使用します。 +は、文字列の連結を表し

f(i) = hash(f(t[i-1]) + t[i]) 

:あなたの繰り返しハッシュは漸化式です。今、私たちは、漸化式f(i)を評価するよりも時間が複雑でithハッシュを計算しますクローズド式F(x)があるかどうかを決定します。

これを達成する1つの方法は、f(t[i-1]) + t[i]と同じハッシュを持つ文字列x(i)を見つけることです。良いハッシュアルゴリズムのために、これらの衝突は非常にまれである。私の直感は、そのような文字列(f(t[i-1]) + t[i]以外)を見つけることは、単に再帰関係から直接計算するよりも難しいということです。

+0

これは、OPの質問に答えています。 OPが与えられると、求めている 'T [N]'と 'S'(他のタイムスタンプの'のT [i]は0 pellucide

関連する問題