Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sdk CX509PublicKeyClass初始化失败,WIN32:13错误\u无效\u数据_Sdk_Pkcs#11_Ca - Fatal编程技术网

Sdk CX509PublicKeyClass初始化失败,WIN32:13错误\u无效\u数据

Sdk CX509PublicKeyClass初始化失败,WIN32:13错误\u无效\u数据,sdk,pkcs#11,ca,Sdk,Pkcs#11,Ca,我试图使用initializeFromeCodedPublicKeyInfo(数据)填充CX509PublicKeyClass()对象其中数据来自我在windows中使用ss keygen client创建的文件id_rsa.pub(KeyFilePath) 我正在使用的示例代码 该图还显示了正在引发的异常。 我怀疑问题可能与预期的编码有关 public virtual void InitializeFromEncodedPublicKeyInfo(string strEncodedPubli

我试图使用initializeFromeCodedPublicKeyInfo(数据)填充CX509PublicKeyClass()对象其中数据来自我在windows中使用ss keygen client创建的文件id_rsa.pub(KeyFilePath

我正在使用的示例代码

该图还显示了正在引发的异常。 我怀疑问题可能与预期的编码有关

public virtual void InitializeFromEncodedPublicKeyInfo(string strEncodedPublicKeyInfo, EncodingType Encoding = EncodingType.XCN_CRYPT_STRING_BASE64);

我尝试了多种组合,十六进制和base64,默认字符串等,但我仍然看到相同的错误。

答案在于理解RSA密钥格式

  • 私钥包括:模、私有指数、公共指数、素数1、素数2、指数1、指数2和系数
  • 公钥包含:仅模数和公共指数
  • OpenSSL产生的PEM格式实际上是base64编码的,并以称为DER的二进制格式包装密钥数据。因此,要使用PEM格式,您必须实际使用DER

    DER格式基于抽象语法表示法1(ASN.1)标准。该标准规定了树状数据结构的编码。两个预定义的数据结构用于私有和公共RSA密钥。虽然我没有找到一个适合这种格式的解析器,但在手头有一些来自标准的注释后,我编写了一个用于编码和解码ASN.1值的类

    PEM格式包含base64编码的DER数据。它还向其添加页眉和页脚。下面是私钥的PEM文件示例