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

时间:2012-04-24 14:14:19

标签: security hash cryptography

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

到目前为止,我的想法是

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

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

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

但是,

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

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

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

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

我已阅读How do I generate a time limited key or password without storing data,这是一个类似的问题。

1 个答案:

答案 0 :(得分:5)

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

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

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

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