【发布时间】:2021-06-01 12:48:31
【问题描述】:
我们有电话号码字段需要在 UAT 环境中进行模糊处理,问题是号码必须是唯一的,并且应该与使用其他数据库的其他数据处理相匹配,这些数据库也被混淆了。我正在尝试创建一个能够可靠地对数字进行加扰的函数,并且每次传入的每个数字都会使用某种我们将安全存储的加密密钥产生相同的加扰数字。我还没有找到一种方法来可靠地以相同的 10 位格式重现数字。有什么想法吗?
【问题讨论】:
-
为什么不散列它们?但是,散列不会让您“返回”到原始数字。散列的好处是您不需要密钥。
-
使用假数据,或者您可以使用随机数生成器生成 7 位或 10 位数字。使用原始数字作为种子。通常时间用于创建伪随机数,但在您的情况下,如果创建相同的数字并不重要。
-
您需要在多大程度上确定没有冲突?最安全的解决方案是将不同的电话号码放入一个表格中,然后在表格中分配一个“随机”号码。
-
根据您的 SQL Server 版本,您可能还想查看
ENCRYPTBYPASSPHRASE。 docs.microsoft.com/en-us/sql/t-sql/functions/… -
另外,BINARY_CHECKSUM([PrimaryPhone]) 似乎可以工作,但会生成重复项,因此它不是唯一的...运行此之后的匹配项比以前更多..
标签: sql sql-server database security