Cifrado de columnas de SQL Server

Tengo un par de columnas en mi aplicación que deben cifrarse por razones de seguridad. ¿Cómo es esto posible con SQL Server 2008? Además, ¿tendría que descifrarlos siempre manualmente o sucederá automáticamente?

Gracias,

Sachin

preguntado el 22 de mayo de 12 a las 11:05

3 Respuestas

Usted puede crear un Certificate y luego un Symmetric Key que utiliza el certificado:

CREATE CERTIFICATE YourCertificate
 WITH SUBJECT = 'Encrypted Content';
GO

CREATE SYMMETRIC KEY SSN_Key
  WITH ALGORITHM = AES_256
   ENCRYPTION BY CERTIFICATE YourCertificate;
GO

Para descifrar: puede usar DecryptByKey:

El ejemplo de MSDN es:

SELECT CardNumber, CardNumber_Encrypted AS 'Encrypted card number',
   CONVERT(nvarchar,
   DecryptByKey(CardNumber_Encrypted, 1 , 
   HashBytes('SHA1', CONVERT(varbinary, CreditCardID)))) AS 'Decrypted card number'  
FROM Sales.CreditCard;

http://msdn.microsoft.com/en-us/library/ms179331(v=sql.105).aspx

contestado el 22 de mayo de 12 a las 11:05

¿Tendré que descifrar mi código o el servidor sql se encargará de eso? - Sachin Kaith

@SachinKainth: deberá descifrar manualmente. Puede hacerlo a través de DecryptByKey (Ver mi edición) - Darren

Eche un vistazo a la publicación de MSDN Cómo: cifrar una columna de datos

contestado el 22 de mayo de 12 a las 11:05

En primer lugar: crea tu clave asym usando este código:

USE [yourDB]    
GO    
CREATE ASYMMETRIC KEY ClaveAsym    
WITH ALGORITHM = RSA_2048 ---->Take a look in this type of algorithms    
ENCRYPTION BY PASSWORD = 'yourKey'
GO

Recuerda esto, debes declarar una variable siempre que quieras desencriptar o encriptar:

DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym')

Descifrando datos

SELECT columnA, CAST(DecryptByAsymKey(@keyid, columnUser, N'yourKey') AS VARCHAR(100)), CONVERT(VARCHAR(MAX), DECRYPTBYASYMKEY(@keyId, columnPass, N'yourKey')) FROM yourTable

Cifrar datos

DECLARE @User VARCHAR(MAX), @pass VARCHAR(MAX)    
SET @User = 'yourUser'    
sET @pass = 'yourPass'    
DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym')    
INSERT INTO yourTable( User, passw) VALUES EncryptByAsymKey (@keyid, @User ), EncryptByAsymKey (@keyid, @pass))

Respondido el 11 de junio de 15 a las 23:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.