📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

FEISTEL_OBFUSCATE



在保持位长度和值基数不变的情况下,对整数(例如 ID 或电话号码)进行确定性混淆,从而使 JOIN 仍然可用。

语法

FEISTEL_OBFUSCATE( <number>, <seed> )

参数

参数描述
number输入
seed不同表中对应的非文本列数据将以相同方式进行转换,因此混淆后不同表中的数据仍可进行 JOIN

返回类型

与输入相同

示例

SELECT feistel_obfuscate(10000,1561819567875); +------------------------------------------+ | feistel_obfuscate(10000, 1561819567875) | +------------------------------------------+ | 15669 | +------------------------------------------+

feistel_obfuscate 会保留原始输入的位数。如果需要映射到更大的范围,可以在原始输入上增加一个偏移,例如 feistel_obfuscate(n+10000,50)

SELECT feistel_obfuscate(10,1561819567875); +------------------------------------------+ | feistel_obfuscate(10, 1561819567875) | +------------------------------------------+ | 13 | +------------------------------------------+

电话号码风格示例(seed = 4242):

SELECT 13000000000 + number AS phone, feistel_obfuscate(13000000000 + number, 4242) AS masked_phone FROM numbers(5); -- Sample output +-------------+--------------+ | phone | masked_phone | +-------------+--------------+ | 13000000000 | 12221668677 | | 13000000001 | 10245458699 | | 13000000002 | 15398657780 | | 13000000003 | 9910824758 | | 13000000004 | 13299971128 | +-------------+--------------+

文档内容是否有帮助?