2013-06-28 428 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檢查您是否正確編寫了密鑰名稱,並且確定使用此密鑰對數據進行了加密? –