2017-09-10 15 views

答えて

2

を(などの秘密のパスワード、パスワードのヒント、の例えば暗号化されたストレージ)を教えてください可能性がありあなたのデータを暗号化するためにENCRYPTBYKEYを使用しようとしていると仮定すると、あなたは、その戻り値がVARBINARYであることがわかります。

varbinary型を8000バイトの最大サイズ。

キー が開いていない場合、キーが存在しない場合、またはキーが非推奨の RC4キーであり、データベースの互換性レベルが110以上でない場合はNULLを返します。

暗号化された値を格納するには、VARBINARYを使用する必要があることは明らかです。 VARBINARY列の長さは、暗号化しているデータの長さと使用されているアルゴリズムの種類によって異なります。

暗号化可能な最大値を生成して、可能な限り最大の暗号化値の長さを確認する人がいます。たとえば、ALGORITHM = AES_256を使用し、NVARCHAR(128)フィールドを暗号化する場合は、フィールド:

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

OPEN SYMMETRIC KEY StackOverflow 
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('StackOverflow'), @MaximumColumnValue) 
PRINT DATALENGTH(@EncrpytionValue); 

DROP SYMMETRIC KEY StackOverflow; 
GO