我正在尝试使用 InitializeFromEncodedPublicKeyInfo(data); 填充CX509PublicKeyClass()对象,其中数据来自我使用ss创建的文件id_rsa.pub( KeyFilePath ) Windows中的-keygen客户端。
该图像还显示了正在抛出的异常。 我怀疑问题可能出在预期的编码方式上
public virtual void InitializeFromEncodedPublicKeyInfo(string strEncodedPublicKeyInfo, EncodingType Encoding = EncodingType.XCN_CRYPT_STRING_BASE64);
并且我尝试了多种组合,十六进制和base64,默认字符串等,但是我仍然看到相同的错误。
答案 0 :(得分:0)
答案在于了解RSA密钥格式
PEM格式实际上是base64编码并以称为DER的二进制格式包装密钥数据。因此,要使用PEM格式,您实际上必须使用DER。
DER格式基于抽象语法表示法一(ASN.1)标准。该标准规定了树状数据结构的编码。两个预定义的数据结构用于私有和公共RSA密钥。尽管我找不到适合该格式的很好的解析器,但从标准的注释中我还是写了一个用于对ASN.1值进行编码和解码的类。
PEM格式包含base64编码的DER数据。它还向其中添加了页眉和页脚。以下是私钥的PEM文件的示例。