Files
hfb_sys/backend/migrations/000089_user_realname_identity_unique.sql

18 lines
834 B
SQL

-- +goose Up
-- 实名唯一性:同一身份证号最多绑定一个已实名账号。
-- encrypted_id_no 使用随机 nonce,同一身份证每次密文不同,不能直接做唯一键;
-- 因此新增由明文身份证号 + 服务端密钥计算的 HMAC 指纹,仅认证通过时写入。
-- 存量记录先保持 NULL,查询时按 masked_id_no + 解密比对兼容,命中后按需补写。
ALTER TABLE user_realname
ADD COLUMN id_no_hash CHAR(64) NULL COMMENT '身份证号 HMAC-SHA256 指纹,仅认证通过时写入' AFTER encrypted_id_no,
ADD KEY idx_user_realname_masked_id_no (masked_id_no),
ADD UNIQUE KEY uk_user_realname_id_no_hash (id_no_hash);
-- +goose Down
ALTER TABLE user_realname
DROP INDEX uk_user_realname_id_no_hash,
DROP INDEX idx_user_realname_masked_id_no,
DROP COLUMN id_no_hash;