Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

162
Visualizações
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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda