SQL Server - 加密数据库表列中的数据

标签 sql sql-server sql-server-2005 encryption

我在 SQL Server 2005 中遇到有关数据加密或加密/解密的问题场景。

场景:

  • 数据库中有特定的表
  • 表格有一列,比方说“信用卡”
  • 要求是该栏的内容或数据要加密

所需的(合理的)解决方案:

  • 插入到该表的列中的数据应该被加密,即对于在数据库和/或表上运行直接查询的人来说是不可读的;或者仅通过使用特定的解密逻辑,这需要某种类型的 KEY
  • 在任何应用程序中读取数据时,解密方法应该很简单,可能是基于 KEY
  • 过程或方法应该易于使用
  • 但很难破解

请在这方面给我一些建议或解决方案。

谢谢。

最佳答案

  • 您使用对称 key 加密数据
  • 你用证书加密对称 key
  • 你用密码加密证书
  • 定期生成一个新的对称 key 来加密新数据
  • 通常您轮换证书并使用新证书重新加密对称 key ,丢弃旧证书

应用程序向用户请求密码并在 session 中打开证书。然后它使用 DECRYPTKEYBYAUTOCERT加密数据。这是通用的行业标准。它保护数据休息并防止意外媒体丢失以及不知道密码的人访问。

你会发现很多关于他的话题的坏建议。任何“自动化”且不要求用户提供解密密码的方案都是错误的。如果您想要“自动”加密或解密,您应该查看 Transparent Data Encryption这可以防止意外的媒体丢失。如果其他用户具有访问权限,TDE 不会防止其他用户浏览数据。

关于SQL Server - 加密数据库表列中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352070/

相关文章:

sql - SQL语句非常慢

mysql - SQL 对多个字段的计数

sql - 如何在 SQL 中根据匹配百分比比较两个字符串

sql-server - 用于复制包含循环引用的 Excel 计算的 SQL Server 代码

sql-server - Microsoft SQL Server,使用一个命令恢复数据库的备份

mysql - 我可以在 WHERE 语句中使用自定义方法吗?

php mysql,变量帮助查询帮助

sql-server - 如何根据 SSIS 中的创建日期读取文件夹的所有文件?

java - 与 Glassfish、jTDS 和 SQL Server 2008 的数据库连接意外关闭

sql-server - SQL Server 2005 中 LOCK_ESCALATION = TABLE 的等效项是什么?