SQLServer中數據加密方法


SQLServer中的數據進行加密,有三種方法,

1、  在程序語言中先對數據進行加密后再把加密后的數據保存在SQLServer數據庫中;

2、  利用SQLServer未公開的加密密碼函數,在SQL代碼中調用加密密碼函數對數據進行加密后保存;

3、  編寫擴展存儲過程的外部DLL文件實現加密,然后由SQL代碼調用加密功能實現數據加密。

 

第一種方法就不再描述,利用第二種方法加密數據代碼示例:

create table #temptable(iorder int, pswd varbinary(1024) )

go

insert into #temptable values(1, pwdencrypt('yang'))

insert into #temptable values(2, pwdencrypt('lian'))

insert into #temptable values(3, pwdencrypt('shan'))

go

select * from #temptable

go

-- 比較數據是否相等

select * from #temptable

where pwdcompare('lian', pswd)=1

go

drop table #temptable

go

 

上面的語句中,用到了二個函數:pwdencryptpwdcompare,這是二個SQLServer未公開的函數,pwdencrypt實現對輸入數據進行加密后返回二進制形式的加密內容,而pwdcompare用於檢查明文是否與加密的二進制數據內容相等,沒有解密函數。這二個函數主要是用於SQLServer內部自己調用。優點是調用方便,缺點是這二個函數沒有公開,就意味着可能改變,並且不兼容原來的,在使用上存在風險。

 

第三種方法,利用SQL Server中的一個擴展存儲過程,名叫sp_addextendedproc,向 Microsoft SQL Server 注冊新擴展存儲過程的名稱。語法為:sp_addextendedproc [@functname=] 'procedure' , [@dllname=] 'dll'。它的功能是把已經寫好在外部DLL文件中的函數引入到SQLServer中,提供給其它SQL代碼調用。其用法示例為:

USE master

GO

EXEC sp_addextendedproc 'xp_hello', 'c:/xp_hello.dll'

上面的語句表示把外部DLL文件 c:/xp_hello.dll 中的函數 xp_hello 引入到SQLServer中,在執行完上面的語句后,主庫中就多了一個名為 xp_hello的擴展存儲過程,我們在其它腳本中就可以調用此擴展存儲過程了。有一點限定的是,sp_addextendedproc只能在master中執行,如果在其它庫中調用xp_hello,需要加上master限定庫名。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM