当前位置: 首页 > 编程语言 > C#

如何使用C#从PKCS#12(.p12)文件获取私钥分享

时间:2023-04-10 14:04:56 C#

C#学习教程:如何使用C#从PKCS#12(.p12)文件中获取私钥从PKCS#12(.p12)文件获取私钥。publicbyte[]sign(stringtext){stringpassword="1111";X509Certificate2cert=newX509Certificate2("c:\certificate.p12",password);byte[]certData=cert.Export(X509ContentType.Pfx,password);X509Certificate2newCert=newX509Certificate2(certData,password);RSACryptoServiceProvidercrypt=(RSACryptoServiceProvider)newCert.PrivateKey;SHA1Managedsha1=newSHA1Managed();UnicodeEncoding编码=newUnicodeEncoding();byte[]hash=sha1.ComputeHash(数据);返回crypt.SignHash(散列,CryptoConfig.MapNameToOID(“SHA1”));问题是newCert.PrivateKey是null但如果我使用.pfxcerticitae它以类似的方式工作。publicbyte[]sign(stringtext){stringpassword="1234";X509Certificate2cert=newX509Certificate2("c:\certificate.pfx",password);RSACryptoServiceProvidercrypt=(RSACryptoServiceProvider)cert.PrivateKey;SHA1Managedsha1=newSHA1Managed();UnicodeEncoding编码=newUnicodeEncoding();byte[]data=encoding.GetBytes(文本);byte[]hash=sha1.ComputeHash(数据);返回crypt.SignHash(散列,CryptoConfig.MapNameToOID(“SHA1”));所以问题是如何从.p12文件中获取私钥?我有一个类似的问题,我把它贴在这里,虽然它对你来说不一样,但问题也可能是权限。我的建议是,首先,您必须确保(我想您已经这样做了)私钥是可导出的,并且您拥有该文件的权限。接下来,尝试将内容类型导出为X509ContentType.Pkcs12而不是X509ContentType.Pfx最后,如果可能,为什么不尝试将其导入证书库。我相信这更安全。步骤在上面的链接中。看看这个问题。它看起来非常相似。在文档中,它说.export()不支持Pfx类型,仅支持Cert、SerializedCert和Pkcs12。这是使用Android完成的-所以下面的R.raw.key是我在AndroidRaw文件夹中的文件。我打开key.p12作为输入流。然后,我使用该库转换为私钥,如示例中所示。http://www.flexiprovider.de/examples/ExampleSMIMEsign.html我的代码是这样的以上是C#学习教程的全部内容:HowtogetprivatekeysharefromPKCS#12(.p12)fileusingC#,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——Security.addProvider(newde.flexiprovider.core.FlexiCoreProvider());//接下来,我们必须读取私有PKCS#12文件,因为用于签名的//私有密钥包含在此文件中:DERDecoderdec=newDERDecoder(getResources().openRawResource(R.raw.key));PFXpfx=newPFX();尝试{pfx.decode(dec);SafeBagsafeBag=pfx.getAuthSafe().getSafeContents(0).getSafeBag(0);PKCS8ShroudedKeyBagkBag=(PKCS8ShroudedKeyBag)safeBag.getBagValue();char[]password="我的p12密码".toCharArray();privKey=kBag.getPrivateKey(密码);新的AsyncLoadStorage(this).execute();}catch(ASN1Exceptione){本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: