2017-09-10 4 views
0

très nouveau pour le cryptage TSQL .. Quelqu'un pourrait-il s'il vous plaît me dire quel type de données serait préférable d'utiliser pour stocker des données de texte crypté (par exemple le stockage crypté des mots de passe secrets, conseils de mot de passe, etc.)TSQL Champ de texte de chiffrement

Répondre

2

en supposant que vous allez utiliser ENCRYPTBYKEY pour crypter vos données, vous pouvez voir que sa valeur de retour est VARBINARY:

varbinary avec une taille maximale de 8000 octets.

Renvoie NULL si la clé n'est pas ouverte, si la clé n'existe pas ou si la clé est obsolète RC4 et si la base de données n'est pas au niveau de compatibilité 110 ou supérieur.

Donc, il est clair que vous devez utiliser VARBINARY pour stocker les valeurs cryptées. La longueur de la colonne VARBINARY varie en fonction de la longueur des données que vous cryptez et du type d'algorithme utilisé.

Certaines personnes génèrent la valeur maximale pouvant être cryptée pour vérifier la longueur maximale de la valeur de cryptage. Par exemple, en utilisant le champ ALGORITHM = AES_256 et cryptage 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