zoukankan      html  css  js  c++  java
  • 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限定库名。

  • 相关阅读:
    二、MyBatis教程之三—多参数的获取方式
    js 编写一道程序题输入长和宽之后点击按钮可弹出长方形面积。
    js 收银元小程序
    文字特效text-shadow HTML+css
    跳动的心 有阴影 跳动
    table框的切换
    jquery选择器是什么?
    随机数Math.random()
    双色球随机数字
    Angularjs 算法//姓名//自定义标签
  • 原文地址:https://www.cnblogs.com/Frank-Zhao/p/3490484.html
Copyright © 2011-2022 走看看