Python 如何散列时间间隔?

Python 如何散列时间间隔?,python,hash,strftime,Python,Hash,Strftime,我需要计算哈希字符串,它将匹配从现在开始的“过去一小时内”的任何未来哈希 我错了: now = datetime.now() hash = now.strftime("%D %H") 但这只是缩短了时间,所以如果我在4点55分,5分钟内“小时”就到了 过去的一小时必须是散列的一部分,因为散列字符串的使用者需要知道散列是否是在过去的一小时内计算的。我认为这根本不可能。以值4:15、4:55、5:30为例,使用散列X、Y和Z。4:55在4:55和5:30的过去一小时内,因此Y必须等于Z。但是,4:

我需要计算哈希字符串,它将匹配从现在开始的“过去一小时内”的任何未来哈希

我错了:

now = datetime.now()
hash = now.strftime("%D %H")
但这只是缩短了时间,所以如果我在4点55分,5分钟内“小时”就到了


过去的一小时必须是散列的一部分,因为散列字符串的使用者需要知道散列是否是在过去的一小时内计算的。

我认为这根本不可能。以值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不同

最好避免散列,按照KatrieleAlex的建议执行,存储日期时间(或时间增量),并在检查中使用它

更新:似乎我误解了你,你想要的是加密哈希,而不是将内容存储在哈希表中以便快速访问。。。也许如果你提供更多关于你的需求的细节,我们可以更好地帮助你,比如谁来构造散列,谁来检查散列,对照什么,等等


一小时内没有多少分钟,甚至没有多少秒,因此原则上,您可以简单地散列初始时间(截断为最接近的分/秒),为了查看散列是否仍然有效,请使用当前时间并检查在此之前每分钟/秒的散列数。这是一个幼稚的解决方案,但也可能是更好的起点。

与mgibsonbr的建议类似,简单的近似解决方案是在当前小时生成一个新令牌,如果失败,请在过去的一小时内再次检查

为什么这必须是散列字符串?为什么不直接存储
datetime
对象并进行比较呢?我想你可能会喜欢@katrielex,我有一个令牌,它只有在过去一个小时内构造才有效。如果我将datetime对象与令牌一起提供,攻击者可以更容易地找出哈希算法。@Ramin:如果您希望哈希是加密安全的,请使用安全哈希,您不必担心攻击者破坏算法。如果没有,您可以提供所需的所有信息。