支付方式  联系我们   网站地图       
首页 关于域浪 互联网数据中心业务、主机托管、主机租用、机架租用、带宽租用、机房介绍、机房对比、CCN网络加速 adsl专线、深圳adsl专线 虚拟主机、域名注册、数据库、企业邮局、动态域名 网络安全、网络临近平台、安全服务、防火去墙租用、安全产品、域浪抗DDOS防火墙、NetScreen防火墙 技术支持  
   当前位置:首页 >> 技术支持 >> MSSQL数据库技术 >> 利用MSSQL sp自制未公开的加密函数
 
精华文章
    关于MSSQL Server中DA...  
    利用MSSQL sp自制未公...  
    MS SQL数据库备份和恢...  
    使用MS SQL7的LINKED ...  
    使用MS SQL7的LINKED ...  
    使用MS SQL7的LINKED ...  
    使用MS SQL7的LINKED ...  
    关于MSSQL占用过多内存...  
    关于MSSQL数据库日志满...  
    Ms SQL Server 中单引...  
    MS SQL Server 7.0 的...  
    MS SQL Server查询优化...  
    Web环境下MS SQL Serv...  
    MS SQL Server 性能优...  
    远程检测MS SQL Serve...  
    MSSQL db_owner角色注...  
    MSSQL注入攻击服务器与...  
    MS-SQL数据库开发常用...  
    win2003 64位系统下as...  
    MSSQL数据库日志压缩/...  
    mssql数据库管理的简单...  
    MSSQL Server 2000的安...  
    如何成为数据库技术专...  
    MS SQL Server数据库事...  
    使用MS SQL7的LINKED ...  
    MS SQL Server:事务处...  
    MS SQL Server 7.0 的...  
    MS SQL Server 7.0 查...  
  更多>>  
   MSSQL数据库技术
 利用MSSQL sp自制未公开的加密函数
Microsoft SQL Server是如何加密口令的?如何自制未公开的加密函数? 



  如果对MSSQL的用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢?



  其实只要仔细看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代码,真是不错。



  让我们来看看它是怎么做的,注意这一行select @passwd = pwdencrypt(@passwd),这个时后@passwd就被加密了,让我们也来试一下

DECLARE @ClearPWD varchar(255) 

DECLARE @EncryptedPWD varbinary(255)

SELECT @ClearPWD = 'test'

SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))

SELECT @EncryptedPWD



  看上去不错,确实被加密了,可是我怎么还原呢? 



  这就没戏了,口令加密都是单向的,用加密后的密文来比较就可以了。



  继续看看其它用户相关的sp,可以发现master.dbo.sp_password里面有口令比较的内容。

pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))



  不用去理会xstatus,这是一个状态掩码,一般我们用的时候就直接用0就可以了

DECLARE @ClearPWD varchar(255) 

DECLARE @EncryptedPWD varbinary(255)

SELECT @ClearPWD = 'test'

SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))

SELECT pwdcompare(@ClearPWD, @EncryptedPWD, 0)

SELECT pwdcompare('ErrorPassword', @EncryptedPWD, 0)



  这样就可以使用这两个函数来加密自己的密码了 。 

  • 上一篇文章: 关于MSSQL Server中DATETIME类型数据的处理
  • 下一篇文章: MS SQL数据库备份和恢复存储过程
  • 深圳地址:深圳市罗湖区宝安北路国际商品交易大厦七楼C30室
    Tel:0755-82266883/82267566 Fax:0755-82261966
    邮编:518000 
                        Copyright © 2006-2008 elang.cn All Rights Reserved 深圳市域浪网络技术有限公司版权所有