Mot de passe de cryptage/décryptage de code .NET
Je veux simple de chiffrement et de déchiffrement du mot de passe en C#. Comment faire pour enregistrer le mot de passe dans un format crypté dans la base de données et de récupérer un original de format de décodage?
- Est-il une raison particulière pour laquelle vous avez besoin de récupérer? La plupart du temps, vous pouvez simplement utiliser une fonction de hachage pour stocker. Puis, quand ils entrer leur mot de passe, vous hachage de leur entrée et de comparer.
Vous devez vous connecter pour publier un commentaire.
Ici vous allez. Je l'ai trouvé quelque part sur internet. Fonctionne bien pour moi.
using
, à l'aide de Win8 + C# 2012 il ne peut pas trouverProtectedData.
EDIT: c'est une très vieille réponse. SHA1 a été dépréciée en 2011 et a été cassé dans la pratique. https://shattered.io/ Usage d'une nouvelle norme au lieu (par exemple, SHA256, SHA512, etc).
Si votre réponse à la question dans mon commentaire est "Non", voici ce que j'utilise:
Cette question réponse comment chiffrer/déchiffrer:
Crypter et décrypter une chaîne
Vous n'avez pas spécifier une base de données, mais vous souhaitez en base 64 coder, à l'aide Convertir.toBase64String.
Pour un exemple, vous pouvez utiliser:
http://www.opinionatedgeek.com/Blog/blogentry=000361/BlogEntry.aspx
Vous ensuite de les enregistrer dans un varchar ou clob, en fonction de combien de temps votre message crypté est, mais pour un mot de passe d'un varchar devrait fonctionner.
Les exemples ci-dessus seront également couvrir le déchiffrement après le décodage en base64
Mise à JOUR:
Dans la réalité vous ne pouvez pas besoin d'utiliser un encodage base64, mais je l'ai trouvé utile, au cas où je voulais l'imprimer ou de l'envoyer sur le web. Si le message est assez long, je l'ai trouvé utile de compresser d'abord, puis de chiffrer, car il est plus difficile d'utiliser la force brute lorsque le message est déjà dans une forme binaire, de sorte qu'il serait difficile de dire quand vous avez réussi a cassé le chiffrement.
- Je utiliser RC2CryptoServiceProvider.
c_iv
etc_key
, il y a une propriétéKey
etIV
dans l'instance deRC2CryptoServiceProvider
.D'abord créer une classe comme:
**Contrôleur **
ajouter une référence pour ce chiffrement classe:
En Vue
L'une des méthodes les plus simples de chiffrement (si vous DEVEZ absolument en faire un vous-même depuis .NET a tel génial bibliothèques de cryptage déjà [fournie par la roue dentée juste avant moi]) est de XOR la valeur ASCII de chaque caractère de la chaîne en entrée avec une "clé" de la valeur. XOR fonctionnalités en C# est accompli à l'aide de l' ^ clé je crois.
Ensuite, vous pouvez convertir les valeurs de la suite de la XOR de Caractères ASCII, et de les stocker dans la base de données. Ce n'est pas très sécurisé, mais il est l'un des plus simple des méthodes de chiffrement.
Également, si vous utilisez une base de données access, j'ai trouvé que certains personnages, lorsqu'il est mis en face d'une chaîne de rendre l'ensemble du champ illisible lors de l'ouverture de la base de données elle-même. Mais le champ est encore lisible par votre application, même si elle est vide à un utilisateur malveillant. Mais qui utilise plus accéder de toute façon droit?
Vous pouvez utiliser la gestion .Net bibliothèque de cryptographie, puis enregistrez la chaîne cryptée dans la base de données. Lorsque vous voulez vérifier le mot de passe, vous pouvez comparer la base de données stockée en chaîne avec la valeur de hachage de la saisie de l'utilisateur. Voir ici pour plus d'infos sur SHA512Managed
en utilisant le Système.De sécurité.La cryptographie;