假如你有一个从原始字符串创建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个散列。 –