RRR*_*RRR 8 c# base64 certificate x509certificate2 private-key
我们使用C#代码我们用.p12文件构建X509Certificate2,在构造函数中我们插入证书的路径,证书的密码.我们还将其标记为可导出,如下所示:
X509Certificate2 x509Certificate2 = new X509Certificate2
("...\\MyCerificate.p12", "P@ssw0rd", X509KeyStorageFlags.Exportable);
Run Code Online (Sandbox Code Playgroud)
我们通过以下方式获取私钥作为AsymmetricAlgorithm格式:
x509Certificate2.PrivateKey
Run Code Online (Sandbox Code Playgroud)
现在,我们希望从证书中获取私钥作为Base64格式 - 但我们不知道如何做到这一点,它对我们如此重要.
重要的问题是为什么base64?
如果这是用于您自己的应用程序,那么您可以将私钥保存为 XML 字符串(更容易:-)。
string xml = x509Certificate2.PrivateKey.ToXmlString (true);
Run Code Online (Sandbox Code Playgroud)
如果您想要base64(再次仅用于您的应用程序),您可以导出密钥(RSAParameters),然后连接每个byte[]并将合并的输出转换为 base64 字符串。
但是,如果您想与需要base64私钥的其他应用程序互操作,则您需要知道格式(在base64字符串中)。例如,在许多情况下,私有密钥是PEM编码(这是一个特殊的页眉/页脚的base64,看到一个例子为X509Certificate)。
如果这是您要查找的内容,那么您首先需要在PKCS#8结构中对私钥进行编码,然后转入 base64 并添加页眉/页脚。您可以在Mono.Security.dll 中找到一些有用的代码(来自 Mono 项目的 MIT.X11 许可代码)。
您可以简单地使用 X509Certificate2 的 PrivateKey 属性。实际返回的私钥实现取决于证书中使用的算法 - 通常是 RSA:
rsaObj = (RSACryptoServiceProvider)myCertificate.PrivateKey;
Run Code Online (Sandbox Code Playgroud)
之后,您应该能够从它的 ExportParameters 属性中获取 RSA 密钥信息。
| 归档时间: |
|
| 查看次数: |
16706 次 |
| 最近记录: |