2016-07-26 78 views
1

我需要加密/解密數據庫中的一些個人信息,例如信用卡號和密碼。SQL Server證書和對稱密鑰

繼微軟的步驟之後,我成功地對&進行了加密解密。

但經過一些測試,我有問題。

假設有人未經授權訪問數據庫(黑客),並可以從他自己的計算機在SSMS中看到數據庫。 Surly他可以看到我有一些證書和對稱密鑰設置。

爲了顯示數據的例子顯示了下面的查詢

OPEN symmetric KEY symmetrickey1 
decryption BY certificate certificate1 
Now list the original ID, the encrypted ID 
SELECT customer_id, 
    credit_card_number_encrypt         AS 
    'Encrypted Credit Card Number', 
    CONVERT(VARCHAR, Decryptbykey(credit_card_number_encrypt)) AS 
    'Decrypted Credit Card Number' 
FROM dbo.customer_data; 
-- Close the symmetric key 
CLOSE symmetric KEY symmetrickey1; 

如果上面的查詢返回的數據,並能看到信用卡那麼如何才能得到保護?是否有必要在查詢中傳遞密碼?

我確定我錯過了這裏的東西。任何人都可以向我解釋這個嗎?

+0

抱歉,我說的是SQL Express的 – user2160275

回答

1

我必須包括一個密碼cerificate

CREATE CERTIFICATE Certificate1 
Encryption By Password='Password123' 
WITH SUBJECT = 'Protect Data' 

用於檢索數據

OPEN Symmetric KEY SymmetricKey1 
DECRYPTION BY CERTIFICATE Certificate1 With Password='Password123' 
; 
select *,CONVERT(nvarchar(255),DECRYPTBYKEY(Credit_Card_No)) as 
[Credit_Card_No3] from Customers 
; 
Close Symmetric Key SymmetricKey1