SQL Server口令加密技巧

日期: 2008-06-02 作者:小灵 来源:TechTarget中国

  如果对SQL Server用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢?其实只要仔细看看master.dbo.sp_addlogin就知道了,SQL Server的sp都可以看到代码,真是不错。


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


  DECLARE@ClearPWDvarchar(255)
  DECLARE@EncryptedPWDvarbinary(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@ClearPWDvarchar(255)
  DECLARE@EncryptedPWDvarbinary(255)
  select@ClearPWD=’test’
  select@EncryptedPWD=CONVERT(varbinary(255),pwdencrypt(@ClearPWD))
  selectpwdcompare(@ClearPWD,@EncryptedPWD,0)
  selectpwdcompare(’ErrorPassword’,@EncryptedPWD,0)


  这样我们就可以使用这两个函数来加密自己的密码了,怎么样,还不错吧?

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

小灵
小灵

相关推荐