加密SQL Server中的列中的数据

时间:2013-02-26 16:06:28

标签: sql database security encryption

sql server中是否存在加密数据的算法。我有一个密码字段,我需要加密,但我必须加密数据一旦在存储过程中传递。这意味着我无法从我的c#代码传递加密数据。

CREATE PROC saveData(@p1 VARCHAR(50),
                 @p2 VARCHAR(50))
AS
BEGIN
  DECLARE @encryptedP1 VARCHAR(50)

  SET @encryptedP1=dbo.fnEncrypt(@p1)  --ENCRYPTING THE DATA WITH AN INBUILT FUNCTION

  INSERT INTO table1
              (column1,
               column2)
  VALUES     (@encryptedP1,
              @p2)
END 

3 个答案:

答案 0 :(得分:7)

这是一个非常快速的例子。它适用于非对称密钥。我希望这可以提供帮助。

首先关闭:使用以下代码创建非对称密钥:


USE [yourDB]

GO

CREATE ASYMMETRIC KEY ClaveAsym

WITH ALGORITHM = RSA_2048 ---->Take a look in this type of algorithms

ENCRYPTION BY PASSWORD = 'yourKey'

GO

请记住这一点,您必须始终声明一个您想要解密加密

的变量
DECLARE @KEYID INT
SET @KEYID = AsymKey_ID('ClaveAsym')

解密数据

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

加密数据

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))

答案 1 :(得分:3)

像往常一样,老Pinal Dave有一些useful information on this。它有点牵扯但是如果你必须在SQL Server中而不是在客户端代码中执行它,那么它应该为你完成这项工作。您可能希望留意性能问题,因为它是一个非常耗费CPU的过程。

答案 2 :(得分:0)

我建议用盐腌的sha1或md5

CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)

虽然散列在技术上不是加密的。