2

我必须使用使用 HMAC 函数创建的哈希来制作 cookie 以进行自动身份验证。

我在网上搜索如何使用 HMAC 功能,根据我的发现,他们是这样操作的:

SELECT * 
FROM   APP.USER
WHERE  ENCODE( HMAC( USER_ID::TEXT, 'MY_KEY', 'SHA256'), 'HEX) = COOKIE_HASH;

问题是 postgres 正在执行顺序扫描。上)

我想知道是否有任何方法可以使用密钥检索 user_id,以便进行索引扫描。

谢谢你的时间(原谅我的英语)。

4

1 回答 1

1

因为你的 sql 试图在每一行上运行函数。您可以使用功能索引或将散列和编码值保存在另一列上。

功能指标:

CREATE INDEX fxix_user_id ON APP.USER(ENCODE(HMAC( USER_ID::TEXT, 'MY_KEY', 'SHA256'), 'HEX));
于 2019-12-12T05:29:34.447 回答