对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内部自己调用。优点是调用方便,缺点是这二个函数没有公开,就意味着可能改变,并且不兼容原来的,在使用上存在风险。

第三种方法,利用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限定库名。

最新文章

  1. Android Tab -- 使用ViewPager、Fragment、FragmentPagerAdapter来实现
  2. 【BZOJ1036】[ZJOI2008]树的统计Count 树链剖分
  3. 使用saripaar对android输入控件进行快速验证
  4. android AutoCompleteTextView和Spinner选中项加亮
  5. HDU-3874 Necklace 线段树+离线
  6. 通过GWT RPC实现客户端与服务器端的交互
  7. [Flexbox] Using order to rearrange flexbox children
  8. AtomicInteger小小的理解
  9. struts2.1.3之后使用自定义Filter
  10. hdu 1245 Saving James Bond
  11. 自定义按照index和key访问的List
  12. 详解Android Activity---启动模式
  13. 使用VS Code开发调试.NET Core 2.0
  14. Upgrading an ASP.NET MVC 2 Project to ASP.NET MVC 3 Tools Update
  15. 从零开始学习前端开发 — 9、标签嵌套规则及CSS常用样式覆盖
  16. bootsect及setup
  17. 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)
  18. 295B - Greg and Graph (floyd逆序处理)
  19. Go 初体验 - channel.2 - 超时机制
  20. Luogu P3990 [SHOI2013]超级跳马

热门文章

  1. Mysql8.0 Public Key Retrieval is not allow错误的解决办法
  2. Spring Mvc:用MultiPartFile上传单个文件,多个文件
  3. Python单例模式实现方法
  4. dsm winscp 获得 root 权限修改上传文件
  5. maven 统一管理依赖的版本号
  6. 创建maven版的java工程
  7. python's decorator&wrapper
  8. PLSQL result set exceeds the maximum size(100M)if necessary,you can explicitly confinue this query
  9. 01b-1: 性能测度
  10. 流形学习 (Manifold Learning)