gpt4 book ai didi

java - Java中HMAC加密后的解决方案

转载 作者:行者123 更新时间:2023-11-29 05:23:50 26 4
gpt4 key购买 nike

我想加密 cookie 并确保 cookie 未被修改,所以我使用 HMAC 来加密 cookie。

有几种实现方式:

<强>1。加密 cookie 上的 HMAC

String encryptedCookie = AES ( cookie )
String mac = HMAC ( encryptedCookie )

-- 持久化 cookie 的值:encryptedCookie + ":"+ mac

<强>2。 HMAC on encrypted cookie & HMAC's sercet key

String encryptedCookie = AES ( cookie )
String mac = HMAC ( encryptedCookie + ":" + Hmac's secretKey )

-- 持久化 cookie 的值:encryptedCookie + ":"+ mac

<强>3。加密 cookie 上的 HMAC 和一些无法猜测的静态数据

String encryptedCookie = AES ( cookie )
String mac = HMAC ( encryptedCookie + ":" + java.sql.ResultSet.class.getName() )

-- 持久化 cookie 的值:encryptedCookie + ":"+ mac

有人有什么想法吗?哪一个更好?或者你的解决方案是什么?谢谢!

最佳答案

HMAC 函数应该已经被键入。因此,通常 HMAC 显示为 HMAC(K, M),其中 K 是 key ,M 是消息。所以候选人 2 在这方面没有意义;这意味着 key K 在计算中包含了 3 次(因为 key 在 HMAC 本身中使用了两次)。

出于同样的原因,使用带有不可猜测数据的 cookie 也没有意义。 HMAC的部分输入是 key K,这已经是不可猜测的数据了。因此您不会获得任何安全性,并且会使您的协议(protocol)复杂化。

现在AES应该用在CBC或者CTR模式下。 ECB 加密模式是不安全的。因此,这意味着您需要随机 IV (CBC) 或唯一 IV (CTR)。此 IV 应该是 HMAC 的一部分,否则攻击者仍有可能更改解密后获得的明文。

关于java - Java中HMAC加密后的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com