TSQL文本字段加密

问题描述:

到TSQL加密很新..可能有人告诉我什么数据类型将是最好用来存储加密的文本数据(例如加密的私密密码存储,密码提示等)TSQL文本字段加密

假设你要使用ENCRYPTBYKEY对数据进行加密,你可以看到,它的返回值是VARBINARY

VARBINARY 8,000个字节的最大尺寸。

如果密钥 未打开,密钥不存在,或者密钥已弃用 RC4密钥且数据库未处于兼容级别110或更高,则返回NULL。

因此,显然您需要使用VARBINARY来存储加密值。 VARBINARY列的长度将根据您正在加密的数据的长度和正在使用的算法类型而有所不同。

有些人生成了可以加密的最大可能值,以检查最大可能的加密值长度。例如,使用ALGORITHM = AES_256和加密NVARCHAR(128)字段:

CREATE SYMMETRIC KEY * WITH ALGORITHM = AES_256 
ENCRYPTION BY PASSWORD = '[email protected]'; 
GO 

OPEN SYMMETRIC KEY * 
DECRYPTION BY PASSWORD = '[email protected]' 
go 

DECLARE @MaximumColumnValue NVARCHAR(128); 
DECLARE @EncrpytionValue VARBINARY(8000); 

SET @MaximumColumnValue = replicate (N'A', 128) 
PRINT DATALENGTH(@MaximumColumnValue); 

SET @EncrpytionValue = EncryptByKey(key_guid('*'), @MaximumColumnValue) 
PRINT DATALENGTH(@EncrpytionValue); 

DROP SYMMETRIC KEY *; 
GO