【问题标题】:Java - Hashing/Encryption Across ServersJava - 跨服务器的散列​​/加密
【发布时间】:2012-03-28 04:42:59
【问题描述】:

我正在寻找一种在 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

目前我必须在配置文件中手动设置 a 并确保场中的每台服务器之间都相同。

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

【问题讨论】:

  • 您可以使用场中所有服务器都可以用来解密它的密钥对其进行加密。

标签: java cookies encryption hash cryptography


【解决方案1】:

您要查找的是HMAC。您应该使用 HMAC 算法,而不是尝试发明自己的算法 - 它旨在消除针对构建键控散列的幼稚方法的几种可能的攻击。

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

另一种选择是使用“cookie 服务器”来创建和验证 cookie;个别机器可以根据需要查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 2012-11-19
    • 2017-08-08
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2011-02-18
    相关资源
    最近更新 更多