最近我被分配了一个问题,加密数据库字段,例如SSN,但仍然必须保持“部分搜索”工作。
例如:SSN 123-45-6789 在数据库中被加密为 abcdxyz。当用户在搜索框中输入“2345”时,它必须出现在结果中。
我们的数据库中有数百万条记录。我们使用的是 SQL Server 2008 R2。我一直在谷歌上搜索,但仍然没有看到任何好的解决方案。对此有什么好的解决办法吗?
感谢帮助。
不,没有。如果可以搜索加密字段,那么根据定义,该字段将被严重加密。可能的替代方案是:
- 搜索解密的值。这在实践中是难以忍受的慢,因为每个查询都必须解密数百万个值。
- 仅搜索完全匹配的内容。由于加密值是加盐的,因此只有当加密安全散列与加密数据一起存储并且搜索是针对散列值进行时,才可能进行精确匹配搜索。
- Use 透明数据加密 http://msdn.microsoft.com/en-us/library/bb934049.aspx而不是列加密。
选项 3) 是迄今为止最好的,但需要企业版许可。如果 TDE 不可用,则必须删除部分搜索的要求,没有现实的方法来满足它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)