Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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
C# 如何在db c中存储X509Certificate2#_C#_Xml_Ado.net_Cryptography_X509certificate - Fatal编程技术网

C# 如何在db c中存储X509Certificate2#

C# 如何在db c中存储X509Certificate2#,c#,xml,ado.net,cryptography,x509certificate,C#,Xml,Ado.net,Cryptography,X509certificate,以下是场景: 我有几个.pfx文件,需要将它们存储在MySQL数据库中 我已经尝试存储RawData,但是当我尝试使用重建的证书对xml进行签名时,我得到: 未加载签名密钥 因此,我尝试存储私钥,使用函数ToXmlString从私钥生成字符串,并使用FromXmlString加载新字符串,但随后我得到: 对象仅包含密钥对的公共部分。还必须提供私钥 关键是,如何正确地将证书及其密钥存储在数据库中,以便我可以重新构造它并将其用于数字签名文档 更新: 已尝试此操作,但无效: 证书仅包含公钥,因此仅存储

以下是场景:

我有几个
.pfx
文件,需要将它们存储在MySQL数据库中

我已经尝试存储RawData,但是当我尝试使用重建的证书对xml进行签名时,我得到:

未加载签名密钥

因此,我尝试存储私钥,使用函数
ToXmlString
从私钥生成字符串,并使用
FromXmlString
加载新字符串,但随后我得到:

对象仅包含密钥对的公共部分。还必须提供私钥

关键是,如何正确地将证书及其密钥存储在数据库中,以便我可以重新构造它并将其用于数字签名文档

更新:

已尝试此操作,但无效:

证书仅包含公钥,因此仅存储公钥不起作用

另一方面,
cert.PrivateKey.ToXmlString(true)
应该可以工作。您确定记得在
includePrivateParameters
参数设置为true时调用它,并将其导入为可导出的吗

X509Certificate2 cert = new X509Certificate2("key.pfx", "password", X509KeyStorageFlags.Exportable);
string xml = cert.PrivateKey.ToXmlString(true);

或者,您可以将整个pfx存储在数据库中。

尝试将私有参数设置为true时出错。如何存储整个pfx?序列化它?它不会松开钥匙。。。属性等?@AlanAraya:我只想存储pfx文件的原始内容。或者,检查导入pfx文件的方式(请参见编辑后的答案)。是的,谢谢Faber…..它缺少X509keystrageFlags.Exportable参数…..不知道,但它不起作用。。。