7

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 
4

3 回答 3

8

这是一个非常快速的例子。它适用于非对称密钥。我希望这会有所帮助。

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


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))
于 2014-02-06T20:02:34.103 回答
5

像往常一样,老皮纳尔戴夫对此有一些有用的信息。这有点牵涉,但如果您必须在 SQL Server 中而不是在客户端代码中执行此操作,那么它应该为您完成这项工作。您可能需要留意性能问题,因为它是一个 CPU 密集型过程。

于 2013-02-26T16:16:14.943 回答
0

我建议使用盐渍 sha1 或 md5

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

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

于 2013-02-26T16:11:16.567 回答