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