【发布时间】:2019-06-10 09:53:13
【问题描述】:
我正在尝试从证书中获取公钥字节[]。
我的同事使用命令:openssl x509 -inform der -in certificate.cer -text -noout,将密钥转储到控制台上,然后将其复制到二进制文件中。
我的任务是使用c# 来完成这项工作。
我使用了以下几行。
var cert = X509Certificate.CreateFromCertFile(
"C:\\Users\\dhermann\\Downloads\\FirmKeyTest\\FirmwareSubordinateSSLTo20190201PublicKey.cer");
byte[] publicKey = cert.GetPublicKey();
我的同事 bin 文件有 136 个字节,而我的给了我 140 个字节,最重要的是,我的最初 7 个字节不包含在他的字节数组中,以下 128 个与他的完全相同,但最后 8 个是不同(其中 3 个未包含在他的字节数组中。
我做错了什么,如何获得与他完全相同的公钥数组?
【问题讨论】:
-
我得到的公钥数组和他的一模一样?为什么? bling 猜测 .net 正在使用 X509v3 你的朋友使用不同的版本
-
@Selvin 因为这是我被赋予的任务。还有哪些其他版本?我是新手,这是我第一次使用公钥,所以我的概念相当小。
-
v1, v2, v3 ...您无法更改
GetPublicKey()的行为...因此您必须了解 cert 在与 openssl 使用相同的版本中的外观并自己编写.. . 还有这是我被赋予的任务没有意义... -
...这也是我被赋予的任务没有意义...因为它闻起来像 xy 问题
-
@Selvin 好的,所以我们有一个需要公钥的二进制文件,我的同事正在执行我在帖子中显示的命令来手动提取密钥字节,这样他就可以在二进制文件。但是这种方法很容易出错,所以我的任务是使用 C# 在二进制文件中提取和插入密钥,并为应用程序提供 UI。现在好点了吗?
标签: c# certificate x509certificate x509 public-key