Cryptage / décryptage symétrique dans .NET
Je suis après un symétrique de chiffrement/déchiffrement de routine en C#. Je sais qu'il y a eu quelques questions sur ce sujet avant, mais la plupart des réponses semblent être sur la philosophie de chiffrement, plutôt que de donner le code réel.
Mise à jour: j'aimerais bien voir un peu de code, plutôt que juste des liens. Merci beaucoup!
source d'informationauteur Craig Schwarze | 2010-01-27
Vous devez vous connecter pour publier un commentaire.
Regardez l'exemple de code au bas de cette page.
Copier-coller ici:
Voici une solution simple que j'ai trouvé sur un VB.NET forum et converti en C#. Il a certainement m'a aidé à mieux comprendre le sujet.
Bien pour les débutants que pour les touches ne sont pas des chaînes, les touches sont blobs binaires. En clair est la même, ce n'est pas vraiment le texte, encore une fois c'est un blob binaire.
Maintenant, bien sûr, vous pouvez convertir des chaînes de tableaux d'octets à l'aide de
Encoding.UTF8.GetBytes(message)
cependant lors de la conversion de clés en arrière et en avant c'est un peu plus compliqué, vous utilisez généralementConvert.ToBase64String
etConvert.FromBase64String
.N'oubliez pas que les algorithmes de chiffrement par bloc également besoin d'une seule chose, le Vecteur d'Initialisation, si vraiment votre méthode de signatures doivent être
La clé et IVs doit être cryptographique sécurisé nombres aléatoiresne vous contentez pas de les saisir et de ne pas utiliser le C#'s fonction Aléatoire. La taille de la clé et le IV dépendent de l'algorithme de chiffrement utilisé, et peut être consulté par les propriétés sur les classes.
Pour générer un CSRPNG vous faites quelque chose comme
Vous pouvez également utiliser le Rfc2898DeriveBytes classe pour dériver une clé et IV à partir d'un mot de passe et un sel, mais là encore, le sel doit être un cryptographique sécurisé de nombre aléatoire. Vous devriez noter également lorsque vous créez un algorithme symétrique d'une clé sécurisée et IV est généré pour vous.
De cette façon, vous pouvez alors choisir l'encodage correct pour votre texte, que ce soit en UTF8, ASCII ou quoi que ce soit. Les liens ont assez d'échantillons, afin de couper et coller ici, c'est plutôt inutile.
ce que u veux cryptoserviceproviders dans la bibliothèque de classe
comme celui-ci pour l'AES
http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider_members.aspx
De convertir votre texte, la clé et le vecteur d'initialisation pour les octets de la première utilisation de l'encodage de votre choix. Ensuite, utilisez le triple DES fournisseur, comme démontré ici:
http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledes.aspx
Ou la l'un pour l'AES, si vous pensez que le triple DES est trop de la vieille école, ou quoi que ce soit.
Par curiosité, comment envisagez-vous sur la communication de la clé secrète?
GPG pour les données au repos. TLS pour les données en mouvement.
GPG http://sourceforge.net/projects/starksoftopenpg/