Chiffrer la chaîne dans le noyau .NET
Je voudrais crypter une chaîne de caractères .NET de Base à l'aide d'une clé. J'ai un client /serveur scénario et souhaitez chiffrer une chaîne de caractères sur le client, de l'envoyer au serveur et de les décrypter.
Comme .NET de Base en est encore à un stade précoce (par exemple, Rijndael est pas encore disponible), quelles sont mes options?
source d'informationauteur dknaack
Vous devez vous connecter pour publier un commentaire.
Vraiment vous ne devriez jamais utiliser de Rijndael/RijndaelManaged .NET. Si vous l'utilisez avec une taille de bloc de valeur de 128 (qui est la valeur par défaut), alors vous êtes en utilisant AES, comme je l'ai expliqué dans une question similaire.
Le chiffrement symétrique options disponibles dans .NET de Base sont:
Et pour le chiffrement asymétrique
En particulier sur .NET de Base usines sont la meilleure façon d'aller, parce qu'ils vont donner en retour un objet qui fonctionne sur le cours d'exécution du système d'exploitation. Par exemple, RSACng est un type de public, mais ne fonctionne que sur Windows, et RSAOpenSsl est un type de public, mais est uniquement pris en charge sur Linux et macOS.
Voici un exemple trivial sans authentification:
Pour la génération de clés:
Il y a déjà une réponse à cela, mais je pense que nous pouvons fournir une solution plus simple.
Si vous voulez simplement protéger vos données, il y a une application pour cela .NET de Base qui vous épargne les maux de tête de chiffrement;
DataProtectionProvider
.Dans
Startup.cs
:Si vous le souhaitez, il est possible de spécifier des algorithmes (à l'aide de
Microsoft.AspNetCore.DataProtection
) utilisée pour le chiffrement et la validation, comme ceci:Ensuite chiffrer/déchiffrer à l'aide d'un service en tant que tel:
Le système de protection des données est activée par défaut pour les ASP.NET les applications de Base. Vous n'avez même pas besoin de faire quoi que ce soit dans votre méthode de Démarrage, sauf si vous voulez reconfigurer le clavier par défaut emplacement de stockage ou de la durée de vie de touches. Dans ce cas, vous ne les suit dans votre ConfigureServices méthode:
Parce que le système de protection des données dans l'application de la collection de services par défaut, il peut être mis à disposition via l'injection de dépendance. Voici comment vous pouvez injecter le IDataProtectionProvider dans un contrôleur, puis l'utiliser pour créer une instance d'un IDataProtector dans le constructeur du contrôleur:
Vous pouvez ensuite appeler le protecteur de chiffrement de contenu comme ceci:
J'espère que cela aide 🙂