假如你有一個從原始字符串創建dont downvote my stupid question
時間戳哈希如何工作?
現在我時間戳這個哈希像這樣一個現有的哈希g84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqa
(在JS /僞代碼):
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
增長)。
這甚至可能嗎?哈希是否可以包含所有這些信息?
我的直覺告訴我,你必須知道原始字符串和所有時間戳(直到第i個)來生成第i個散列。 –