未公開的SQL Server口令的加密函數(shù)
更新時間:2006年07月20日 00:00:00 作者:
如果對MSSQL的用戶信息有興趣的,可能會發(fā)現(xiàn)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
看上去不錯,確實被加密了,可是我怎么還原呢?
口令加密都是單向的,用加密后的密文來比較就可以了。
繼續(xù)看看其它用戶相關(guān)的sp,可以發(fā)現(xiàn)master.dbo.sp_password里面有口令比較的內(nèi)容。
pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))
不用去理會xstatus,這是一個狀態(tài)掩碼,一般我們用的時候就直接用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)
這樣我們就可以使用這兩個函數(shù)來加密自己的密碼了
其實只要仔細看看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
看上去不錯,確實被加密了,可是我怎么還原呢?
口令加密都是單向的,用加密后的密文來比較就可以了。
繼續(xù)看看其它用戶相關(guān)的sp,可以發(fā)現(xiàn)master.dbo.sp_password里面有口令比較的內(nèi)容。
pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))
不用去理會xstatus,這是一個狀態(tài)掩碼,一般我們用的時候就直接用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)
這樣我們就可以使用這兩個函數(shù)來加密自己的密碼了
相關(guān)文章
SQL Server 2014 數(shù)據(jù)庫中文版安裝圖文教程
這篇文章主要介紹了SQL Server 2014 數(shù)據(jù)庫中文版安裝圖文教程,需要的朋友可以參考下2021-05-05
SQL高級應(yīng)用之同服務(wù)器上復(fù)制表到另一數(shù)據(jù)庫中并實現(xiàn)去重復(fù)
項目需求:將數(shù)據(jù)庫Whir_ezMall_Full中的表Whir_Member的數(shù)據(jù)遷移到數(shù)據(jù)庫Whir_ezMall_Full_c中的Whir_Member表,已存在的ID記錄則不插入2014-06-06
SQL Server兩表數(shù)據(jù)同步的多種方法詳解
這篇文章主要介紹了SQL Server兩表數(shù)據(jù)同步的多種方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
order by newid() 各種數(shù)據(jù)庫隨機查詢的方法
order by newid() 各種數(shù)據(jù)庫隨機查詢的方法,需要的朋友可以參考一下2013-04-04
50個常用sql語句 網(wǎng)上流行的學(xué)生選課表的例子
這篇文字在網(wǎng)上被轉(zhuǎn)載爛了,里面有些sql適合用在應(yīng)用系統(tǒng)里,有些“報表”的感 覺更重些,主要是想復(fù)習(xí)前者2012-06-06

