You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求PostgreSQL(Amazon Aurora DB)支持的8字节哈希函数

适用于PostgreSQL/Amazon Aurora的8字节哈希方案

以下是满足你需求的几种可行方案,均能生成8字节哈希并存储到长度为8的字符串字段中:

1. 利用pgcrypto扩展的digest函数截取哈希

首先启用pgcrypto扩展(Aurora PostgreSQL默认支持该扩展):

CREATE EXTENSION IF NOT EXISTS pgcrypto;

通过digest生成哈希摘要后截取前8字节,编码为可存储的字符串:

-- 生成SHA-256哈希的前8字节,输出8字节长度的字符串
SELECT encode(left(digest('你的输入数据', 'sha256'), 8), 'escape') AS hash_8byte;

该结果可直接存入varchar(8)或text字段。

2. 使用内置hash函数生成64位哈希

PostgreSQL内置的hash函数返回64位整数(对应8字节),可转换为二进制字符串存储:

-- 将64位哈希整数转为8字节字符串
SELECT encode(hash('你的输入数据')::bytea, 'escape') AS hash_8byte;

注意:hash是PostgreSQL内部哈希函数,不保证跨版本一致性,若需跨系统兼容,优先选择加密哈希算法。

3. 第三方高性能哈希扩展(如farmhash)

若追求更高性能的非加密哈希,可安装farmhash扩展(Aurora PostgreSQL支持安装),它直接生成64位(8字节)哈希:

-- 先安装farmhash扩展(需管理员权限)
CREATE EXTENSION IF NOT EXISTS farmhash;

-- 生成8字节哈希并转为字符串
SELECT encode(farmhash64('你的输入数据')::bytea, 'escape') AS hash_8byte;

FarmHash是Google推出的高性能哈希算法,适合对性能要求较高的场景。

额外提示

  • 若字段支持存储二进制数据,建议直接用bytea类型存储8字节哈希,无需编码,效率更高:
    SELECT left(digest('你的输入数据', 'sha256'), 8) AS hash_8byte_bytea;
    
  • varchar(8)在PostgreSQL中指8个单字节字符,上述方案生成的均为单字节字符串,不会出现长度溢出问题。

内容的提问来源于stack exchange,提问作者SDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:12:16