我想我要問的是不可能的,但是,認爲這值得一試。SQL Server PWDEncrypt值比較
我們有一個使用SQL Server PWDEncrypt和PWDCompare函數的應用程序。
系統的一部分會創建用戶的重複項(相同的登錄名和密碼)。由於系統中存在一個錯誤,而不是複製密碼的二進制存儲的PWDEncrypt,而是執行另一個密碼的PWDEncrypt。因此二進制值不匹配。
是否有可能找出這兩個二進制值是否具有相同密碼的哈希值?
例如PWDEncrypt('abc')= PWDEncrypt('abc')
如果我能做到這一點,那麼這意味着我可以找出有多少用戶這個bug實際上受到影響,而不是與數千人打交道!
編輯:爲了澄清,PWDEncrypt('abc')= PWDEncrypt('abc')將不會返回true,因爲密碼被散列爲不同的值。
雖然我知道從密碼中獲得密碼是不可能的,但是PWDCOMPARE('abc',PWDENCRYPT('abc'))的作用,因此,內部SQL Server必須做的不僅僅是散列你正在比較的密碼並檢查值是否相同。
我認爲PWDCOMPARE('abc',PWDENCRYPT('abc'))在內部工作的方式是PWDCOMPARE將散列'abc'與salt在PWDENCRYPT('abc')生成的散列中使用這種方式,PWDCOMPARE永遠不需要解密密碼,也不知道它是什麼。 – 2009-04-27 12:51:28