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

时间:2011-03-18 12:38:52

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

我在SQL Server 2005中遇到了数据加密或加密/解密的问题。

情景:

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

必需(似是而非)解决方案:

  • 插入此表列中的数据应加密,即对在数据库和/或表上运行直接查询的人员无法读取;或者只使用特定的解密逻辑,这需要某种类型的密钥
  • 在任何应用程序中读取数据时,解密方法应该很容易,可能是基于KEY的
  • 流程或方法应该易于使用
  • 但很难打破

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

谢谢。

2 个答案:

答案 0 :(得分:3)

  • 使用对称密钥加密数据
  • 使用证书加密对称密钥
  • 您使用密码加密证书
  • 定期生成新的对称密钥以加密新数据
  • priodically您旋转证书并使用新证书重新加密对称密钥,删除旧证书

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

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

答案 1 :(得分:2)

尝试查看DecryptByKey函数。