我在 SQL Server 2005 中遇到有关数据加密或加密/解密的问题场景。
场景:
- 数据库中有特定的表
- 表格有一列,比方说“信用卡”
- 要求是该栏的内容或数据要加密
所需的(合理的)解决方案:
- 插入到该表的列中的数据应该被加密,即对于在数据库和/或表上运行直接查询的人来说是不可读的;或者仅通过使用特定的解密逻辑,这需要某种类型的 KEY
- 在任何应用程序中读取数据时,解密方法应该很简单,可能是基于 KEY
- 过程或方法应该易于使用
- 但很难破解
请在这方面给我一些建议或解决方案。
谢谢。
最佳答案
- 您使用对称 key 加密数据
- 你用证书加密对称 key
- 你用密码加密证书
- 定期生成一个新的对称 key 来加密新数据
- 通常您轮换证书并使用新证书重新加密对称 key ,丢弃旧证书
应用程序向用户请求密码并在 session 中打开证书。然后它使用 DECRYPTKEYBYAUTOCERT加密数据。这是通用的行业标准。它保护数据休息并防止意外媒体丢失以及不知道密码的人访问。
你会发现很多关于他的话题的坏建议。任何“自动化”且不要求用户提供解密密码的方案都是错误的。如果您想要“自动”加密或解密,您应该查看 Transparent Data Encryption这可以防止意外的媒体丢失。如果其他用户具有访问权限,TDE 不会防止其他用户浏览数据。
关于SQL Server - 加密数据库表列中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352070/