【发布时间】:2018-03-31 21:07:41
【问题描述】:
假设您有一个现有的哈希 g84t5tw73y487tb38wo4bq8o34q384o7nfw3q434hqa,它是从原始字符串 dont downvote my stupid question 创建的
现在我像这样为这个哈希加时间戳(在 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
但如果我尝试根据时间戳验证原始字符串,我不能这样做:
var today = '2017-10-19';
var verified = goodHash('dont downvote my stupid question'+today, timestamped_hash); // FALSE
现在假设这个原始字符串在n 迭代中一遍又一遍地被散列和时间戳。
如果我有 n-1th 哈希,我将只能验证 n-1th 时间戳。
但是如果我有原始字符串 dont downvote my stupid question 并且想要验证任何 ith 时间戳,其中 0 < i < n。
基本上,我想验证一个只有我应该知道的字符串是否已在给定日期打上时间戳,无论它可能被打了多少次时间戳并且而不增加长度字符串的长度(太多 - 尽管 any 随着 n 的增长,长度的增加会接近无穷大)。
这甚至可能吗?哈希甚至可以包含所有这些信息吗?
【问题讨论】:
-
我的直觉告诉我,你必须知道原始字符串和所有时间戳(直到第 i 个)才能生成第 i 个哈希。
标签: encryption hash cryptography public-key-encryption sha256