我有一个 USB 签名令牌,它包含带有 RSA 加密算法的公钥和私钥,我可以使用命令导出公钥文件
openssl x509 -pubkey -noout -in mystamp.cer > pubkey.txt
现在我需要在 c# 中从令牌 USB 中导出私钥这个公钥。 我也用这个代码
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2 cert = store.Certificates.Find(X509FindType.FindByThumbprint, "71faaced4d4ae3d81399faa61fbc13c56bce0638", false)[0];
// Export the certificate including the private key.
byte[] certBytes = cert.Export(X509ContentType.Pkcs12, "My Password Of Token");
var privateKey = (System.Security.Cryptography.RSACryptoServiceProvider)cert.PrivateKey;
var privateKeyString1= privateKey.ToXmlString(false);// I when change to true get an error
var privateKeyString2= Convert.ToBase64String(certBytes);
但是当 privateKeyString1 或 privateKeyString2 传递给这个方法时 CryptoUtils.SignData() 我收到私钥格式错误。
您不能从令牌(实际上是智能卡)中导出私钥。这是硬件安全模块令牌(或智能卡)的主要目的,即密钥材料不能离开硬件。但是,这并不妨碍您使用通过调用中间件 API 进行签名或加密操作的密钥。
我也有获取私钥或从 epass 3003 获取签名的问题。 如果你能解决你的问题,请帮助我。 谢谢。 电子邮件:[email protected]