Как сравнить пароль Microsoft Access с предоставленным пользователем паролем? - PullRequest
0 голосов
/ 05 марта 2010

Любопытно, как сравнить строку текстового поля с паролем, который пользователь использовал для аутентификации при запуске базы данных Microsoft Access.

Версия Microsoft Access 2003. Пользователи аутентифицируются, используя Безопасность Microsoft Access Jet .

ОБНОВЛЕНИЕ: Согласно CesarGon (спасибо), это действительно вопрос сравнения хэшированных значений; Как я могу скопировать хеширование, которое выполняет Microsoft Access, и сравнить хэши?

Ответы [ 2 ]

1 голос
/ 06 марта 2010

В форме смены пароля вы можете выполнить команду ado sql:

ALTER USER user PASSWORD newpassword oldpassword

Просто убедитесь, что текст, введенный для обоих паролей, не одинаков.

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

1 голос
/ 05 марта 2010

Я не думаю, что вы можете сделать это. Пароли, которые пользователи используют для безопасности 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")

Если рабочая область создана, то указанный пароль был правильным. Если пароль был неверным, рабочая область не будет создана, и возникнет ошибка.

...