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,