快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

利用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)


  这样我们就可以使用这两个函数来加密自己的密码了:)
返回类别: 教程
上一教程: 全面接触SQL语法(二)
下一教程: SQL Server 7.0 入门(五)

您可以阅读与"利用MSSQL sp自制未公开的加密函数"相关的教程:
· 利用MSSQL sp自制未公开的加密函数
· SQL SERVER存储过程、存储函数的加密、解密
· 两个未公开的ACCESS方式的使用技巧
· SQL SERVER 2005: 利用新的RANKING函数实现高效的数据分页操作
· 利用INSTR()函数防止SQL注入攻击
    微笑服务 优质保证 索取样品