我在SQL Server中通过对称密钥加密数据。如何用C#解密

时间:2015-06-15 04:24:11

标签: c# encryption

存储在MS SQL服务器中的数据使用AES128进行加密,AES128是一种对称密钥算法。

如果我知道密码,如何在C#中解密这些数据?

1 个答案:

答案 0 :(得分:1)

您可以调用存储过程来解密密钥并返回结果。让您在名为“YOUR_TABLE”的表中加密名为“SSN”的列,密码为“YOUR_PASSWORD”。要返回解密的SSN,这个存储过程将正常工作:

DECLARE @SymKeyPwd VARCHAR(50) = 'YOUR_PASSWORD'

DECLARE @open nvarchar(200)
SET @open = 'OPEN SYMMETRIC KEY Sym_ssn DECRYPTION BY CERTIFICATE Cert_Password WITH PASSWORD = ' + quotename(@SymKeyPwd,'''') + ';';

SELECT (CAST(DECRYPTBYKEY(SSN) as nvarchar(MAX) FROM YOUR_TABLE

IF EXISTS (
    SELECT *
    FROM sys.openkeys
    WHERE key_name = 'Sym_ssn'
    )
BEGIN
    CLOSE SYMMETRIC KEY Sym_ssn
END

从您的c#代码调用上述SP并获得所需的结果。