es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener el valor n de un archivo XML de clave pública RSA en .NET Core C#

¿Cuál es el valor de n del punto final de JWKS?

Cómo obtener ese valor n del archivo de clave pública RSA en formato XML en .net core c#.

Aquí está mi clave pública RSA.

<rsakeyvalue><modulus>w2EmXqTfj7LDHtN8/H6I1XAOW5bnH2j0IYDK2VSg0kd+TtCJDh/rogV/ouxGBYoyr6pEtuOQsQyIYcUWektRL+/hVHPZzw9VTNtxGpgYZoVjFH1TB+acJ5wz7eOAybLdEHA4/F7A9VyvlRDir6AuuXcqF4yU0G3Ew21bFzRT7S0hDMMmHCsKwvi33lFkWkMFNnXVwQMdWu59jgksMvTQDWpFveUBr1E4R9FRYmrQPe4hMrjijlmS86xBTn3Qasd6qnT2uW137uwtC2aaqWS/Q8BGBbDpOxiMxffrGLyr3Xos1dOCgqx+oE/ZW6+CGhC+F4My/2EZNciyGhtt4N5abQ==</modulus><exponent>AQAB</exponent></rsakeyvalue>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El valor n del punto final JWKS es el módulo de la clave pública RSA.

    Para obtener el valor n del archivo XML de clave pública RSA en .NET Core C#, puedes usar el siguiente código:

    using System.Security.Cryptography;
    using System.Xml;
    
    // Carga la clave pública RSA desde el archivo XML
    var rsa = new RSACryptoServiceProvider();
    var xml = @"<rsakeyvalue><modulus>w2EmXqTfj7LDHtN8/H6I1XAOW5bnH2j0IYDK2VSg0kd+TtCJDh/rogV/ouxGBYoyr6pEtuOQsQyIYcUWektRL+/hVHPZzw9VTNtxGpgYZoVjFH1TB+acJ5wz7eOAybLdEHA4/F7A9VyvlRDir6AuuXcqF4yU0G3Ew21bFzRT7S0hDMMmHCsKwvi33lFkWkMFNnXVwQMdWu59jgksMvTQDWpFveUBr1E4R9FRYmrQPe4hMrjijlmS86xBTn3Qasd6qnT2uW137uwtC2aaqWS/Q8BGBbDpOxiMxffrGLyr3Xos1dOCgqx+oE/ZW6+CGhC+F4My/2EZNciyGhtt4N5abQ==</modulus><exponent>AQAB</exponent></rsakeyvalue>";
    var xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(xml); // Carga la cadena XML en un objeto de tipo XmlDocument
    var nodeModulus = xmlDoc.SelectSingleNode("//RSAKeyValue/Modulus"); // Selecciona el nodo Modulus
    var nodeExponent = xmlDoc.SelectSingleNode("//RSAKeyValue/Exponent"); // Selecciona el nodo Exponent
    rsa.ImportParameters(new RSAParameters
    {
        Modulus = Convert.FromBase64String(nodeModulus.InnerText),
        Exponent = Convert.FromBase64String(nodeExponent.InnerText)
    });
    
    // Obtén el valor n, que es el módulo de la clave pública RSA
    var valorN = rsa.ExportParameters(false).Modulus;
    

    En este código, primero cargamos la clave pública RSA desde el archivo XML y seleccionamos los nodos Modulus y Exponent. Luego utilizamos RSACryptoServiceProvider para importar los valores Modulus y Exponent, y exportar los parámetros de la clave pública RSA, que incluyen el valor Modulus. Finalmente, obtenemos el valor n accediendo a la propiedad Modulus de los parámetros de RSA exportados.

Comments are closed.