2017-07-21 2 views
2

Dans .NET Framework 4.6.2 Microsoft added support for persisted-key symmetric encryption en utilisant un fournisseur de stockage de clés CNG et l'algorithme AesCng. Le documentation for instantiating the AesCng class en utilisant une clé existante est assez clair - il suffit de passer le nom de la clé dans le constructeur. Mais comment générer une nouvelle clé persistante à utiliser pour le chiffrement AES?Comment générer une clé persistante pour AES

Je ne trouve pas les instructions dans les notes de mise à jour ou la documentation. Est-ce même possible de C#?

+0

Avez-vous essayé d'appeler le constructeur en utilisant seulement un nom de clé, puis appeler 'GenerateKey'? Et oui, la documentation Microsoft crypto-API est certainement foobar. –

+0

Oui. Le constructeur lance CryptographicException 'Keyset n'existe pas'. –

Répondre

2

Bien qu'il ne soit pas bien documenté, cela s'avère très facile à faire. Vous utilisez simplement la méthode CngKey.Create. La difficulté est qu'il n'y a pas de propriété CngAlgorithm pour le cryptage AES. Cela ressemble à un oubli de l'équipe .NET Framework chez Microsoft. Cependant, vous pouvez construire votre propre CngAlgorithm par nom:

public static string CreateKey(string name) 
    { 
     CngKey.Create(new CngAlgorithm("AES"), name); 
    } 

Voir aussi: Asymetric cryptography example in c#

+1

Super, merci de nous avoir signalé! Malheureusement, j'ai jeté de nombreux indices à Microsoft sur l'amélioration de leur documentation (il n'y en a pas eu de suite); il reste extrêmement clairsemé. –