2013-06-28 429 views
5
CREATE ASYMMETRIC KEY Asym_EPassword 
WITH ALGORITHM = RSA_512 
ENCRYPTION BY PASSWORD = testdemo123 

我已经使用上面的加密非对称密钥加密了我的表的Password列。在SQL Server查询中解密密码

现在我想我的解密查询selectpassword

任何人都可以建议如何做到这一点?

+16

你并不意味着解密密码。你的意思是加密字符串以对照存储在数据库中的加密值进行测试。如果某个东西可以被解密,那么它就没有加密的意义,它就不会安全。 – Ben

+11

虽然我同意你不应该解密密码。我认为最后一句话“如果某件事可以被解密,那么没有点加密它”是有点错误的。加密应该是可逆的,散列是一种单向机制。 –

+0

我只是要求检索解密密码在选择查询不保存在数据库中 –

回答

1
​​

SQLFiddle不要让用户创建非对称密钥,因此对于演示复制/粘贴这对你自己的SSMS:

CREATE ASYMMETRIC KEY Asym_EPassword 
WITH ALGORITHM = RSA_512 
ENCRYPTION BY PASSWORD = 'testDemo123!' 

DECLARE @PlainText NVARCHAR(100) 
DECLARE @CipherText VARBINARY(MAX) 

SET @PlainText = 'AAAAA' 
SELECT @CipherText = EncryptByAsymKey(AsymKey_ID('Asym_EPassword'), @PlainText); 

SELECT @CipherText; 

SELECT CONVERT(NVARCHAR(100), DecryptByAsymKey(AsymKey_ID('Asym_EPassword'), @CipherText, N'testDemo123!')); 
+1

我已经使用了相同的查询,但明文字段为空值 –

+0

@ user1826753检查您是否正确编写了密钥名称,并且确定使用此密钥对数据进行了加密? –