Sql Server簡單加密與解密 【轉】

來源:互聯網
上載者:User

標籤:style   http   io   color   ar   os   使用   sp   strong   

前言:

      在SQL Server 2005和SQL Server 2008之前。如果希望加密敏感性資料,如財務資訊、工資或社會安全號碼,必須藉助外部應用程式或演算法。SQL Server 2005引入內建資料加密的能力,使用認證、密鑰和系統函數的組合來完成。

    與數位憑證類似。SQL Server 認證包括公開金鑰和私密金鑰這一對密鑰,它們都用來加密和解密資料。SQL Server也擁有建立非對稱金鑰和對稱金鑰對象的能力。非對稱金鑰(asymmetric key)與認證相似,公開金鑰用來加密資料庫,私密金鑰用來解密資料。非對稱金鑰和認證都提供了強大的加密強度。但在完成複雜的加密|解密過程中具有更多的效能開銷。更適合對大量資料進行加密,且具有較低效能開銷的解決方案是對稱金鑰(symmetric key),它是對相同資料進行加密和解密的一個密鑰。

    SQL Server允許將這些加密能力放到加密階層中。當安裝了SQL Server後,在資料庫master中建立名為服務主要金鑰的伺服器層級認證,並將其默綁定到SQL Server服務帳號登入名稱。服務主要金鑰用來加密所有其他資料庫認證和建立在SQL Server執行個體中的密鑰。另外,你也可以在使用者資料庫中建立資料庫主要金鑰(Database Master Key),它可以用來加密資料庫認證和密鑰。

    在SQL Server 2008中,微軟引入了透明資料加密(TDE),它對整個資料庫進行加密,而不需要修改任何訪問它的應用程式。資料、記錄檔和相關的Database Backup都是加密的。假如資料庫被偷,如果沒有資料庫加密金鑰(DEK)是不能訪問資料的。

 

一、通過複雜密碼(PassPhrase)加密

     對於不涉及認證及密鑰的應急的資料加密,可以直接基於使用者提供的密碼來加密和解密資料。複雜密碼(PassPhrase)是允許存在空格的密碼。這個PassPhrase不會儲存在資料庫中,因而也就意味著不會被使用儲存的系統資料“破解”。同時,可以使用空格建立一個長的、易於記憶的句子來加密和解密敏感性資料。

我們需要瞭解的一對函數是

ENCRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms190357.aspx

DECRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms188910.aspx

這一對函數必須使用相同的參數。

    我們看一個樣本:

--------加密函數-----------
CREATE FUNCTION dbo.EncryptByPassPhrasePwd(@password nvarchar(50))
RETURNS varbinary(max)
AS  
BEGIN 
    declare @pwd varbinary(max) SELECT @pwd = EncryptByPassPhrase(
 ‘1234567‘,            
 @password)
    return @pwd
END
---------解密函數----------
CREATE  FUNCTION dbo.DecryptByPassPhrasePwd(@password varbinary(max))
RETURNS nvarchar(max)
AS  
BEGIN 
    declare @pwd nvarchar(max) SELECT @pwd =CAST( DecryptByPassPhrase(‘1234567‘,@password)  as nvarchar(max))
    return @pwd
END 注意:123456 是用於產生對稱金鑰的複雜密碼 select dbo.EncryptByPassPhrasePwd(‘test11‘) as result
select dbo.DecryptByPassPhrasePwd(0x010000004779C35F96DACC0EC6A8C518E186D203B1A336EE5B8A51B4271B54F56F516ECE) as result

 

 至尊箭神:http://www.zhizunjianshen.com/  

 

Sql Server簡單加密與解密 【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.