如何解决CX509PublicKeyClass初始化因WIN32而失败:13 ERROR_INVALID_DATA
我正在尝试使用 InitializeFromEncodedPublicKeyInfo(data); 填充CX509PublicKeyClass()对象,其中数据来自我使用ss创建的文件id_rsa.pub( KeyFilePath ) Windows中的-keygen客户端。
该图像还显示了正在抛出的异常。 我怀疑问题可能出在预期的编码方式上
public virtual void InitializeFromEncodedPublicKeyInfo(string strEncodedPublicKeyInfo,EncodingType Encoding = EncodingType.XCN_CRYPT_STRING_BASE64);
并且我尝试了多种组合,十六进制和base64,默认字符串等,但是我仍然看到相同的错误。
解决方法
答案在于了解RSA密钥格式
- 私有密钥包含:模数,私有指数,公共指数,素数1,素数2,指数1,指数2和系数
- 公共密钥仅包含:模数和公共指数。
PEM格式实际上是base64编码并以称为DER的二进制格式包装密钥数据。因此,要使用PEM格式,您实际上必须使用DER。
DER格式基于抽象语法表示法一(ASN.1)标准。该标准规定了树状数据结构的编码。两个预定义的数据结构用于私有和公共RSA密钥。尽管我找不到适合该格式的很好的解析器,但从标准的注释中我还是写了一个用于对ASN.1值进行编码和解码的类。
PEM格式包含base64编码的DER数据。它还向其中添加了页眉和页脚。以下是私钥的PEM文件的示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。