PostgreSQL10,Pgcrypto,HMAC,如何重新计算数据?

时间:2018-10-18 01:47:57

标签: sql postgresql plpgsql hmac pgcrypto

我必须使用通过HMAC函数创建的散列来制作cookie,以进行自动身份验证。

我当时正在互联网上搜索HMAC功能的使用方法,根据我发现的内容,他们这样做是这样的:

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

问题在于postgres正在执行顺序扫描。 O(n)

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

感谢您的时间(请原谅我的英语)。

1 个答案:

答案 0 :(得分:1)

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

功能索引:

REDIS_PREFIX=