我需要计算一个哈希字符串,该字符串将从现在开始“匹配过去一小时内”的任何未来哈希值。
我错误地做了:
now = datetime.now()
hash = now.strftime("%D %H")
但这只是截断分钟,所以如果我说4:55,在5分钟内“小时”就会结束。
由于哈希字符串的使用者需要知道哈希是否是在过去一小时内计算出来的,因此过去一小时必须成为哈希的一部分。
答案 0 :(得分:1)
我认为这根本不可能。例如,值4:15,4:55,5:30,哈希X,Y和Z. 4:55在4:55和5:30的过去时间内,所以Y必须等于Z但是,4:15是4:55的过去时间,而不是5:30,所以X必须等于Y并且与Z不同。
最好避免哈希并按照katrielalex的建议行事,存储日期时间(或时间点)并在支票中使用。
更新:似乎我误解了你,你想要加密的哈希,而不是将东西存放在哈希表中以便快速访问...也许如果你提供更多你需求的细节,我们可以帮助你更好,比如谁将构造哈希,谁将检查哈希,反对什么等。
一小时内没有多少分钟,甚至很多秒,所以原则上你可以简单地散列初始时间(截断到最接近的分钟/秒),并查看散列是否仍然有效,取当前时间并检查之前每分钟/秒的哈希值。一个天真的解决方案,但可以成为更好的起点。
答案 1 :(得分:0)
类似于mgibsonbr的建议,简单的近似解决方案是使用当前小时生成新令牌,然后如果失败,请再次检查过去一小时。