如何从 RSA 公钥 XML 文件 .net core c# 中获取 n 值

Posted

技术标签:

【中文标题】如何从 RSA 公钥 XML 文件 .net core c# 中获取 n 值【英文标题】:How to get n value from RSA public key XML file .net core c# 【发布时间】:2022-01-16 17:05:42 【问题描述】:

JWKS 端点的 n 值是多少。

如何从 .net core c# 中的 RSA 公钥 XML 文件中获取 n 值。

这是我的 RSA 公钥。

<RSAKeyValue><Modulus>w2EmXqTfj7LDHtN8/H6I1XAOW5bnH2j0IYDK2VSg0kd+TtCJDh/rogV/ouxGBYoyr6pEtuOQsQyIYcUWektRL+/hVHPZzw9VTNtxGpgYZoVjFH1TB+acJ5wz7eOAybLdEHA4/F7A9VyvlRDir6AuuXcqF4yU0G3Ew21bFzRT7S0hDMMmHCsKwvi33lFkWkMFNnXVwQMdWu59jgksMvTQDWpFveUBr1E4R9FRYmrQPe4hMrjijlmS86xBTn3Qasd6qnT2uW137uwtC2aaqWS/Q8BGBbDpOxiMxffrGLyr3Xos1dOCgqx+oE/ZW6+CGhC+F4My/2EZNciyGhtt4N5abQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

【问题讨论】:

【参考方案1】:

模数为 n,指数为 e,另见 here

只需几行,使用LINQ to XML,就可以提取值:

using System;
using System.Xml.Linq;

namespace RSAXML

    class Program
    
        static void Main(string[] args)
        

            string RSAKey = "<RSAKeyValue><Modulus>w2EmXqTfj7LDHtN8/H6I1XAOW5bnH2j0IYDK2VSg0kd+TtCJDh/rogV/ouxGBYoyr6pEtuOQsQyIYcUWektRL+/hVHPZzw9VTNtxGpgYZoVjFH1TB+acJ5wz7eOAybLdEHA4/F7A9VyvlRDir6AuuXcqF4yU0G3Ew21bFzRT7S0hDMMmHCsKwvi33lFkWkMFNnXVwQMdWu59jgksMvTQDWpFveUBr1E4R9FRYmrQPe4hMrjijlmS86xBTn3Qasd6qnT2uW137uwtC2aaqWS/Q8BGBbDpOxiMxffrGLyr3Xos1dOCgqx+oE/ZW6+CGhC+F4My/2EZNciyGhtt4N5abQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";

            XElement RSAKeyXML = XElement.Parse(RSAKey);
            
            string Modulus = RSAKeyXML.Element("Modulus").Value.ToString();

            Console.WriteLine(Modulus);
        
    

结果:

w2EmXqTfj7LDHtN8 / H6I1XAOW5bnH2j0IYDK2VSg0kd + TtCJDh / rogV / ouxGBYoyr6pEtuOQsQyIYcUWektRL + / + hVHPZzw9VTNtxGpgYZoVjFH1TB acJ5wz7eOAybLdEHA4 / F7A9VyvlRDir6AuuXcqF4yU0G3Ew21bFzRT7S0hDMMmHCsKwvi33lFkWkMFNnXVwQMdWu59jgksMvTQDWpFveUBr1E4R9FRYmrQPe4hMrjijlmS86xBTn3Qasd6qnT2uW137uwtC2aaqWS / Q8BGBbDpOxiMxffrGLyr3Xos1dOCgqx + OE / ZW6 + CGHC + F4My / 2EZNciyGhtt4N5abQ == P>

在这个Q/A 中,您可以看到如何根据模数和指数导入密钥。

【讨论】:

你能转换成整数并显示使用哪种字节序吗?哦,当我查看 n 的值时,它似乎是无符号大端

以上是关于如何从 RSA 公钥 XML 文件 .net core c# 中获取 n 值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中从文件中加载 RSA 公钥

通过 OpenSSL (c++) 以 XML (w3c) 格式保存 RSA 公钥和私钥

Perl 和 .NET RSA 一起工作?从 Perl 公钥在 .NET 中加密?从 Perl 加载私钥?

在.NET中实现RSA公钥/私钥解密到Java/Spring

如何从 .cer 中提取 RSA 公钥并使用 OpenSSL 将其存储在 .pem 中?

如何存储/检索 RSA 公钥/私钥