Cifrado de columnas de SQL Server
Frecuentes
Visto 2,312 veces
2
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
3 Respuestas
3
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
2
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
0
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 sql sql-server sql-server-2008 tsql encryption or haz tu propia pregunta.
¿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