Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
Almacene una clave AES conocida con CngKey por nombre para su uso posterior

Quiero almacenar una clave AES conocida (recuperada sin conexión) ingresándola en la aplicación una vez, guardándola en Cng para almacenarla y luego hacer referencia a ella solo por su nombre en el uso posterior.

Quiero guardar la clave en el proveedor de almacenamiento de claves para que mi aplicación no la cargue en la memoria.

Puedo crear (generar) una clave AES (que puedo recuperar y crear una instancia de AesCng ) como esta:

 CngProvider keyStorageProvider = CngProvider.MicrosoftSoftwareKeyStorageProvider; CngKeyCreationParameters keyCreationParameters = new CngKeyCreationParameters() { ExportPolicy = CngExportPolicies.AllowPlaintextExport, KeyCreationOptions = CngKeyCreationOptions.OverwriteExistingKey }; var name = "mykey"; var algo = new CngAlgorithm("AES"); var created = CngKey.Create(algo, name, keyCreationParameters);

Pero, ¿cómo puedo agregar mi clave simétrica AES ya conocida y simplemente hacer referencia a ella por nombre la próxima vez que ejecute mi aplicación para ejecutar el cifrado/descifrado usando Cng?

El uso CngKey.Import no me permite especificar un nombre y creo que probé todas las sobrecargas, pero todas producen algún tipo de error.

ACTUALIZAR:

Este es un ejemplo de trabajo completo al crear una clave.

 // Calling code byte[] key = //<from external input>; byte[] data = new byte[] { 0xA, 0xB, 0xC, 0xD }; crypto.StoreKey("appkey", key); var encryptedData = crypto.EncryptWithStoredKey("appkey", data); // Implementation public void StoreKey(string name, byte[] key) { CngKeyCreationParameters keyCreationParameters = new CngKeyCreationParameters() { KeyCreationOptions = CngKeyCreationOptions.OverwriteExistingKey }; var algo = new CngAlgorithm("AES"); // Question: How can I import the byte[] key with name "appkey" instead of generating a new key here? CngKey.Create(algo, name, keyCreationParameters); } public byte[] EncryptWithStoredKey(string name, byte[] data) { using (var cng = new AesCng(name)) using (var encryptor = cng.CreateEncryptor()) using (var memoryStream = new MemoryStream()) { using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) { cryptoStream.Write(data, 0, data.Length); cryptoStream.FlushFinalBlock(); return memoryStream.ToArray(); } } }
over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!