如何创建限时哈希/密钥?

pil*_*rth 3 security hash cryptography

我正在尝试创建一个时间限制键,以便在我的某个应用程序中使用.该密钥用于解锁应用程序中的某些功能.

到目前为止我的想法是

生成:加密哈希我需要的各种信息+密钥生成日期

验证:加密哈希我需要的各种信息+现在约会

如果所有信息都相同且日期相同,我会得到相同的值

但,

这意味着密钥只能在某个特定日期使用.我想要的是一个在接下来的24小时内有效的密钥(或者延长这个,几天/每周/每月).

我可以延长期限,但总是有可能在期限到期之前生成密钥,例如一个月密钥的月份的最后一天.

首先,这是一种可以接受的方式吗?如果是这样,我该怎么办?

我知道将时钟"缠绕"会打败系统 - 但我仍然有兴趣获得一些意见

我已阅读如何生成时间限制密钥或密码而不存储类似问题的数据.

Gum*_*mbo 5

您可以将令牌的到期日期作为部分,并使用类似HMAC 的MAC对整个数据进行身份验证:

token = data ":" expiration ":" HMAC(key, data ":" expiration)
Run Code Online (Sandbox Code Playgroud)

要验证令牌,您只需要比较给定的到期数据并使用密钥重新生成所提供数据的MAC .

如果任何提供的参数被篡改,则MAC将是不同的,因为需要秘密密钥来生成真实的MAC.

  • 我建议您嵌入*发行日期*,而不要嵌入到期日期,因为这使您可以选择以优雅的方式更改到期期限,即使在发行令牌后也是如此。 (2认同)