2009-05-04 6 views
0

J'ai une application cliente qui doit enregistrer un nom d'utilisateur/mot de passe pour un serveur SMTP. Ces données vont dans SQL Server 2005 et seront consommées par mon application serveur. L'application serveur utilisera l'espace de noms System.Net.Mail pour envoyer des messages électroniques à l'aide des informations d'identification fournies (et de l'adresse de messagerie de cet utilisateur). Comment puis-je crypter/décrypter le mot de passe facilement/en toute sécurité de sorte que je n'ai pas de mots de passe en texte clair volant à travers le fil? Notez que les applications client et serveur ne sont PAS garanties sur le même ordinateur.Chiffrement/déchiffrement d'un mot de passe SMTP dans une application client/serveur

Répondre

1

Il existe un espace de noms de chiffrement complet dans .NET - System.Security.Cryptography (example). Vous pouvez donc crypter/décrypter les données sur le client.

Maintenant, comment stocker la clé pour le chiffrement. Cela peut être stocké dans app.config chiffré comme décrit here. Notez cependant que si l'utilisateur a un accès administrateur à la machine, il peut déchiffrer les clés stockées dans votre app.config.

+0

Vous semblez suggérer d'utiliser l'interface gérée .Net pour DPAPI afin de protéger la clé qui protège les données. Pourquoi ne pas simplement utiliser DPAPI directement pour protéger les données (c'est-à-dire System.Security.Cryptography.ProtectedData). Juste une clé qui déverrouille les données, pas une clé qui déverrouille une clé, qui déverrouille finalement les données. – chyne

+0

Je pensais que les mots de passe auraient dû être cryptés dans la base de données et partagés entre les clients. C'est à dire. la clé des données de la base de données doit être partagée ... – Rashack

Questions connexes