SQLServer中数据加密方法

SQLServer中的数据进行加密,有三种方法,数据库

一、  在程序语言中先对数据进行加密后再把加密后的数据保存在SQLServer数据库中;函数

二、  利用SQLServer未公开的加密密码函数,在SQL代码中调用加密密码函数对数据进行加密后保存;加密

三、  编写扩展存储过程的外部DLL文件实现加密,而后由SQL代码调用加密功能实现数据加密。spa

 

第一种方法就再也不描述,利用第二种方法加密数据代码示例:io

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

goast

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

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

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限定库名。

相关文章
相关标签/搜索