3

我正在尝试创建一个限时密钥以在我的一个应用程序中使用。密钥用于解锁应用程序中的某些功能。

到目前为止我的想法是

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

验证:加密散列我需要的各种信息+现在的日期

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

但,

这意味着密钥仅在特定日期有效。我想要的是一个在接下来的 24 小时内有效的密钥(或延长这个,几天/周/月)。

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

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

我知道“倒计时”会破坏系统 - 但我仍然有兴趣获得一些意见

我已阅读如何在不存储数据的情况下生成限时密钥或密码,这是一个类似的问题。

4

1 回答 1

6

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

token = data ":" expiration ":" HMAC(key, data ":" expiration)

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

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

于 2012-04-24T16:51:07.080 回答