SQL Server 2014 中的列级数据加密

Column level data encryption in SQL Server 2014

我需要在 SQL 服务器 2014 中加密多个 table 中的少量列级数据。在阅读 Microsoft 论坛上关于加密一列数据的文章后,我有点困惑.我是否需要在 table 中为加密数据创建一个新列?我的意思是可以加密现有列而不是为加密数据创建新列吗?假设 A 列有我需要加密的信用卡信息。根据文章,需要创建 B 列来存储加密的信用卡信息。是否可以对 A 列进行加密而不是创建额外的 B 列。 谢谢

几乎在每种情况下,您都必须为加密数据创建一个新列。加密数据以 varbinary 类型存储在 SQL 服务器中。纯文本数据几乎总是采用 varchar 或其他一些字符类型。在您的情况下,您的 ColumnA 可能是 varchar(16) 或类似的东西,而 ColumnB 可能是 varbinary(128).

您可以而且应该在加密过程完成后删除原始列,否则您仍然面临大多数安全风险。如果愿意,您还可以将保存敏感数据密文的新 varbinary 类型列重命名为原始列名。请记住,它现在以密文而不是原始明文形式保存数据。

如果您的源类型也是 varbinary 并且有足够的长度来存储新加密的数据,您可以进行就地加密,但如果您改变主意或在或过程中发现代码中的错误,则存在风险执行后不久,您没有快速简便的方法来退出更改。当你就地加密时,你也失去了并排 testing/verification 的能力。最后,希望您不会有太多需要加密的 varbinary 列。