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

  • 相关阅读:
    正则表达式$的一些用法
    基本类型数据转换(int,char,byte)
    IntelliJ Idea 2017 免费激活方法
    jrebel license server 激活方法
    linux 完全关闭tomcat
    spring data jpa自定义bean字段映射
    idea 启动调试模式总提示端口58346被占用问题
    java使用jsch连接linux
    福大软工 · BETA 版冲刺前准备(团队)
    Alpha 事后诸葛亮
  • 原文地址:https://www.cnblogs.com/Frank-Zhao/p/3490484.html
Copyright © 2011-2022 走看看