未公开的SQL

假如对MSSQL的客户音讯有意思味的,大概会发觉master.dbo.sysxlogins里面寄放着顾客的口令,然则呢,password字段假设不是null正是一群看不懂的binary,这一个口令是怎么加密的吧?
其实假诺留意看看master.dbo.sp_addlogin就知道了,MSSQL的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,(CASEWHENxstatus&2048=2048THEN1ELSE0ENDState of Qatar卡塔尔(قطر‎不用去理会xstatus,那是二个状态掩码,平日大家用的时候就径直用0就足以了
DECLARE@ClearPWDvarchar(255State of Qatar DECLARE@EncryptedPWDvarbinary(255卡塔尔(قطر‎SELECT@ClearPWD=’test’
SELECT@EncryptedPWD=CONVERT(varbinary(255卡塔尔(قطر‎,pwdencrypt(@ClearPWD卡塔尔卡塔尔SELECTpwdcompare(@ClearPWD,@EncryptedPWD,0卡塔尔(قطر‎SELECTpwdcompare(‘ErrorPassword’,@EncryptedPWD,0卡塔尔那样我们就足以行使那五个函数来加密本身的密码了

发表评论

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