我需要在 SQL Server 2014 的多个表中加密几个列级数据。在阅读了微软论坛上关于加密一列数据的文章后,我有点困惑。我是否需要在表中为加密数据创建一个新列?我的意思是可以加密现有列而不是为加密数据创建新列吗?假设 A 列有我需要加密的信用卡信息。根据文章,需要创建 B 列来存储加密的信用卡信息。是否可以对 A 列进行加密而不是创建额外的 B 列。谢谢
1 回答
0
几乎在每种情况下,您都必须为加密数据创建一个新列。加密数据以 varbinary 类型存储在 SQL Server 中。纯文本数据几乎总是 varchar 或其他字符类型。在您的情况下,您的 ColumnA 可能是 varchar(16) 或类似的东西,而 ColumnB 可能是 varbinary(128)。
您可以并且应该在加密过程完成后删除原始列,否则您仍然会面临大多数安全风险。如果愿意,您还可以将保存敏感数据密文的新 varbinary 类型列重命名为原始列名。请记住,它现在以密文而不是原始明文的形式保存数据。
如果您的源类型也是 varbinary 并且有足够的长度来存储新加密的数据,您可以进行就地加密,但如果您在执行期间或执行后不久改变主意或发现代码中的错误,则存在风险,您没有快速简便的方法来退出更改。当您就地加密时,您也失去了进行并行测试/验证的能力。最后,希望您不会有太多需要加密的 varbinary 列。
于 2015-09-08T20:35:28.380 回答