如果對mssql的使用者資訊有興趣的,可能會發現master.dbo.sysxlogins裡面存放著使用者的口令,可是呢,password欄位如果不是null就是一堆看不懂的binary,這個口令是怎麼加密的呢?
其實只要仔細看看master.dbo.sp_addlogin就知道了,mssql的sp都可以看到**,真是不錯。
讓我們來看看它是怎麼做的,注意這一行select pjvgynel@passwd www.cppcns.com;= 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&nbswww.cppcns.comp;xstatus&2048 = 2048 then 1 else end))
不用去理會xstatus,這是乙個狀態掩碼,一般我們用的時候就直接用0就可以了
declare @clearpwd&nbpjvgynelsp;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 server口令的加密函式
本文位址:
未公開的SQL Server口令的加密函式
未公開的sql server口令的加密函式 如果對mssql的使用者資訊有興趣的,可能會發現master.dbo.sysxlogins裡面存放著使用者的口令,可是呢,password欄位如果不是null就是一堆看不懂的binary,這個口令是怎麼加密的呢?其實只要仔細看看master.dbo.sp ...
SQL Server未公開的兩個儲存過程
sp msforeachtable和sp msforeachdb是sql server的兩個系統儲存過程,存在於master資料庫當中,但是在sql server的聯機幫助中並沒有這兩個儲存過程,也就是說微軟並沒有把這兩個儲存過程編進sql server的聯機叢書中。那麼microsoft設計這兩個...
PowerBuilder 未公開函式
原文 已知乙個dw中的某列的列名 在字串變數中 以獲得這個列物件的dwo 方法是 dwobject ldwo use,ldwo name ldwo use dw 1.object ldwo name ldwo use.get attribute name false 這樣就可以在用setitem 設...