2012-03-28 67 views
0

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

我是做soomething样的思维:

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将在所有机器上相同?有没有更好的方式去做这件事?

+0

您可以使用服务器场中所有服务器可用于解密的密钥对其进行加密。 – Hiro2k 2012-03-28 05:09:57

回答

1

你在找什么是HMAC。你应该使用HMAC算法,而不是试图发明自己的 - 它的目的是否定几种可能的攻击,以构建密钥散列的幼稚方式。

密钥(你称之为'秘密uuid')必须分发给所有的机器,并且没有神奇的密码方式来避免这种情况。推测你有一些方法来部署代码和配置;你应该使用同样的方法来分配密钥。

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