我需要加密现有表的列。我尝试使用加密值进行更新,但列变为空白。有没有办法让我可以在列中看到二进制值而不是空白。
我不想将数据转储到临时表,对其进行加密并转储回原始数据库,因为我在数据库中没有更多空间,因为它是历史数据库。
这是我的加密和解密代码。
OPEN SYMMETRIC KEY PCI_Key DECRYPTION
BY CERTIFICATE Cert
GO
UPDATE dbo.Table1
SET column1=ENCRYPTBYKEY(KEY_GUID('PCI_Key'), column1)
CLOSE SYMMETRIC KEY PCI_Key
OPEN SYMMETRIC KEY PCI_Key DECRYPTION
BY CERTIFICATE Cert
GO
SELECT
CONVERT(VARCHAR,DEcryptByKey(Column1)) as column1 from dbo.table1
CLOSE SYMMETRIC KEY PCI_Key
答案 0 :(得分:2)
对于加密,您必须具有可以使用SQL SERVER加密功能的列的VARBINARY数据类型。
如果您可以更改的其他表可以直接更改列的数据类型并插入\更新数据,则可以按照这些步骤执行以下步骤。
对于现有数据,请遵循以下步骤(如果表中的数据不是很大,则其他方法会有所不同)
干杯!