Java - 跨服务器的哈希/加密

时间:2012-03-28 04:43:00

标签: java cookies encryption hash cryptography

我正在寻找一种方法来安全地散列Cookie中的数据。我有一个服务器群,任何服务器都可以发出Cookie,任何服务器都需要能够验证cookie的内容。

我想做像:

这样的事情

Cookie内容:

SHA(<secret-uuid><user-id><expiration-date>)|<user-id>|<expiration-date>

例如:

122233344444|bob|2012-01-01-12-01-03

验证cookie时,我可以简单地将“明文数据”重新哈希到哈希值:

SHA1(<secret-uuid>bob2012-01-01-12-01-03) == 122233344444

目前,我必须在配置文件中手动设置一个,并确保它们在服务器场中的每个服务器之间都是相同的。

是否有任何“安全”方式以编程方式生成在所有计算机上都相同的SECRET-UUID?有没有更好的方法来做这件事?

1 个答案:

答案 0 :(得分:1)

您要找的是HMAC。您应该使用HMAC算法,而不是尝试创建自己的算法 - 它旨在否定几种可能的攻击,以防止构建密钥哈希的天真方式。

密钥(你称之为“秘密uuid”)必须分发给所有机器,并且没有神奇的加密方法来避免这种情况。据推测,您可以通过某种方式部署代码和配置;您应该使用相同的方法来分发密钥。

另一种方法是拥有一个创建和验证cookie的'cookie服务器';个别机器可以根据需要进行查询。