加密SQL Server中的列中的数据

Man*_*wat 5 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 
Run Code Online (Sandbox Code Playgroud)

Orl*_*era 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
Run Code Online (Sandbox Code Playgroud)

请记住,您必须始终声明要解密加密的变量

DECLARE @KEYID INT
SET @KEYID = AsymKey_ID('ClaveAsym')
Run Code Online (Sandbox Code Playgroud)

解密数据

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

加密数据

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))
Run Code Online (Sandbox Code Playgroud)


Sim*_*mon 5

像往常一样,好老 Pinal Dave 有一些关于此的有用信息。这有点复杂,但如果您必须在 SQL Server 中执行此操作,而不是在客户端代码中执行,那么它应该为您完成这项工作。您可能需要注意性能问题,因为它是一个 CPU 密集型过程。

  • Downvoter - 关心评论?最初的问题询问了 SQL Server 中的加密,这就是他得到的。仅仅因为你不同意这是一个好主意就拒绝投票似乎有点意思。哎呀,我什至指出... (9认同)
  • 年度轻描淡写。在数据库服务器上进行这种处理通常不是一个好主意。(注释不是批评) (3认同)

idi*_*ous 0

我建议使用 salted sha1 或 md5

CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)
Run Code Online (Sandbox Code Playgroud)

尽管散列在技术上并不是加密。