2010-03-05 3 views
0

Curieux de savoir comment comparer une chaîne de zone de texte au mot de passe utilisé par l'utilisateur pour s'authentifier lors du démarrage de la base de données Microsoft Access.Comment faire pour comparer le mot de passe Microsoft Access avec le mot de passe fourni par l'utilisateur?

La version de Microsoft Access est 2003. Les utilisateurs s'authentifient en utilisant Microsoft Access Jet security.

MISE À JOUR: Par CésarGon (merci), il s'agit vraiment de comparer des valeurs hachées; comment puis-je répliquer le hachage Microsoft Access et comparer les hachages?

+0

Peut-être que vous devriez expliquer * pourquoi * vous voulez faire. Vous demandez une solution prédéfinie (ce qui s'avère impossible) au lieu de décrire le problème que vous essayez de résoudre. –

+0

Merci pour la suggestion, David. :) – iokevins

+0

Le but de cet exercice est d'avoir un écran de changement de mot de passe. Nous aimerions comparer le mot de passe entré par rapport au mot de passe existant. De cette façon, le mot de passe est vraiment changé. – iokevins

Répondre

1

Dans votre formulaire de changement de mot de passe, vous pouvez exécuter une commande sql ado:

ALTER USER user PASSWORD newpassword oldpassword 

Assurez-vous que le texte est entré pour les deux mots de passe ne sont pas les mêmes.

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

+0

Merci Jeff O! :) Je vais essayer cette solution quand je retournerai au travail le lundi. – iokevins

1

Je ne pense pas que vous puissiez le faire. Les mots de passe que les utilisateurs utilisent pour la sécurité Jet sont hachés et stockés dans la base de données System.mdw; les mots de passe eux-mêmes sont pas stockés, mais seulement un hachage calculé à partir du mot de passe. Il n'y a aucun moyen (pratique) pour récupérer le mot de passe de ce hachage.

Modifier. Vous pouvez utiliser l'API Jet pour que Jet effectue la validation pour vous. Voici un exemple de code:

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

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

Si l'espace de travail est créé, le mot de passe fourni est correct. Si le mot de passe était incorrect, l'espace de travail ne sera pas créé et une erreur sera générée.

+0

Merci CesarGon; comment puis-je répliquer le hachage Microsoft Access et comparer les hachages? – iokevins

+1

@schultkl: Je n'en ai aucune idée. Je ne sais pas quel algorithme de hachage utilise Jet. Désolé, je ne peux pas être utile. :-( – CesarGon

+1

@schultkl: Mais peut-être que vous pouvez appeler par programmation Jet pour effectuer la validation pour vous, je suis en train d'éditer ma réponse pour le montrer – CesarGon