对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
电烤箱温度控制系统上⾯的语句中,⽤到了⼆个函数:pwdencrypt和pwdcompare,这是⼆个SQLServer未公开的函数,pwdencrypt实现对输⼊数据进⾏加密后返回⼆进制形式的加密内容,⽽pwdcompare⽤于检查明⽂是否与加密的⼆进制数据内容相等,没有解密函数。这⼆个函数主要是⽤于SQLServer内部⾃⼰调⽤。
数控分度头
优点是调⽤⽅便,缺点是这⼆个函数没有公开,就意味着可能改变,并且不兼容原来的,在使⽤上存在风险。竞赛抢答器
第三种⽅法,在我的上⼀篇⽂章《在SQLServer中调⽤外部扩展存储过程》⾥,已描述了怎样编写扩展存储过程DLL⽂件和怎样注册扩展存储过程,我提供了⼀个完整的加密DLL⽂件,可注册到SQLServer中调⽤,也可注册为COM库,还可在语⾔中直接调⽤声明的函数,由于在⽂章中没有上传⽂件的功能,因此,我先把此DLL⽂件上传到“我的资源”中,有兴趣者可下载。永久模板
说明:本⽂不讨论哪种⽅法好和坏,在于列举出后⼆种⽅法,供⼤家参考,只有实⽤的才是最好的。