使用脚本加密现有列(始终加密)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用脚本加密现有列(始终加密)相关的知识,希望对你有一定的参考价值。

我需要使用列加密密钥“MyCEK”使用“始终加密”(确定性)加密名称列。

我不想通过向导来完成它,但我需要为它编写脚本,我可以在多个服务器上运行(针对不同的环境,如DEV,TEST,PROD)。

我已经有了创建密钥的脚本。

ALTER TABLE MyTable
ALTER COLUMN [Name] [varchar](200) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [MyCEK], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL

只是想知道我是否可以使用类似的东西来改变表格,它会给出一个错误:

操作数类型冲突:使用(encryption_type ='DETERMINISTIC',encryption_algorithm_name ='AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name ='TwoValueCE',column_encryption_key_database_name ='EmpData2')加密的nvarchar(max)与使用(encryption_type ='DETERMINISTIC'加密的varchar(200)不兼容,encryption_algorithm_name ='AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name ='TwoValueCE',column_encryption_key_database_name ='EmpData2')collat​​ion_name ='Latin1_General_BIN2'

答案

看看你是否可以使用DROPCREATE,我运行脚本来创建带有加密列的新表,没有问题,例如:

CREATE TABLE [dbo].[Table1](
[ScannedInput] [varchar](50) COLLATE Latin1_General_BIN2 ENCRYPTED WITH 
(COLUMN_ENCRYPTION_KEY = [CEK_Auto2], ENCRYPTION_TYPE = Deterministic, ALGORITHM 
= 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL,

以上是关于使用脚本加密现有列(始终加密)的主要内容,如果未能解决你的问题,请参考以下文章

始终加密:无法使用密钥存储提供程序解密列加密密钥:“MSSQL_CERTIFICATE_STORE”

始终加密 - 创建证书错误 windows server 2012

参数化(始终加密)- 内部存储过程

.NET Core 2.2 > 不支持始终加密

无法使用 PowerShell 插入到始终加密的表中

ASP MVC 应用程序中的列加密与使用 .net Core / EF Core 的 SQL Server 2016