2010-03-05 132 views
0

對於如何將文本框字符串與用戶在啓動Microsoft Access數據庫時用於驗證自己的密碼進行比較感到好奇。如何比較Microsoft Access密碼與用戶提供的密碼?

Microsoft Access版本是2003.用戶使用Microsoft Access Jet security進行身份驗證。

更新:每CesarGon(謝謝),這是一個真正的比較哈希值的問題;我如何複製Microsoft Access的散列並對散列進行比較?

+0

也許你應該解釋爲什麼* *你想這樣做。你正在詢問一個預定義的解決方案(事實證明這是不可能的),而不是描述你試圖解決的實際問題。 – 2010-03-05 20:57:18

+0

感謝大衛的建議。 :) – iokevins 2010-03-05 21:19:22

+0

這個練習的要點是有一個密碼更改屏幕。我們想比較輸入的密碼與現有密碼。這樣,密碼真的改變了。 – iokevins 2010-03-05 22:33:23

回答

1

在您更改密碼錶單,您可以執行一個ADO SQL命令:

ALTER USER user PASSWORD newpassword oldpassword 

只要確保兩個密碼輸入的文本是不一樣的。

http://msdn.microsoft.com/en-us/library/bb177884.aspx

+0

謝謝Jeff O! :)我將在週一重新開始工作時嘗試此解決方案。 – iokevins 2010-03-06 19:23:04

1

我不認爲你可以做到這一點。用戶用於Jet安全性的密碼被散列並存儲在System.mdw數據庫中;密碼本身是而不是存儲的,但只有從密碼計算出來的散列。沒有(實際的)方法從該散列恢復密碼。

編輯。您可以使用Jet API讓Jet爲您執行驗證。這是一些示例代碼:

'set security database. 
DBEngine.SystemDB = "C:\Temp\System.mdw" 

'create a workspace. 
Set wksp = DBEngine.CreateWorkspace("New", "John", "john's-password") 

如果工作區已創建,則提供的密碼是正確的。如果密碼不正確,工作區將不會被創建並且會引發錯誤。

+0

謝謝CesarGon;我如何複製Microsoft Access的散列並對散列進行比較? – iokevins 2010-03-05 20:18:10

+1

@schultkl:我不知道。我不知道Jet使用的哈希算法。對不起,我不能幫助。 :-( – CesarGon 2010-03-05 20:31:01

+1

@schultkl:但是也許你可以通過編程方式調用Jet來爲你執行驗證;我正在編輯我的答案以顯示此內容 – CesarGon 2010-03-05 20:34:31