【发布时间】:2015-03-06 21:07:35
【问题描述】:
我正在尝试使用加密来混淆我的 SQL 数据库中的列。我开始按照MSDN 中显示的步骤进行操作,效果很好,但不适合生产,因为它会在未加密的列中显示我试图保护的数据。
所以我想将 EncryptByKey 应用于 SQL INSERT 命令,如下所示:
INSERT INTO [myTable]
VALUES (foo, 'bar', EncryptByKey(Key_GUID('EncryptionKey'), 'fooBar'));
GO
当我在执行此命令后检查结果时,我在包含加密数据值“fooBar”的列中看到了预期的 varbinary gobbledygook 字符串(我的加密数据列设置为 varbinary(128) 格式。)但是,当我尝试解密我的数据:
SELECT [encryptedColumn],
CONVERT(nvarchar, DecryptByKey(encryptedColumn))
AS 'Decrypted Column'
FROM [myTable];
GO
值“fooBar”在“解密列”中以某种楔形文字、亚洲风格的脚本返回。这是什么原因造成的?我正在使用 SQL Server 2008 R2 和 AES_256 加密算法。
【问题讨论】:
标签: encryption sql-server-2008-r2