我使用 javascript 打开 CAPICOM 商店来选择证书。之后,我导出选定的证书、该证书的公钥和私钥,并将它们放在三个隐藏字段中。
var privateKey = certificates.Item(1).PrivateKey;
var cert = certificates.Item(1);
var publicKey = cert.PublicKey().EncodedKey.Value
签署 xml 时,我使用:
拿证
Dim hideCertCapicom As String = Replace(HiddenCert.Value, " ", "+")
Dim certificate As New X509Certificate2(Convert.FromBase64String(hideCertCapicom))
为了定义我使用的私钥
Dim keyC As String = hideKey
Dim cspp As New CspParameters()
cspp.KeyContainerName = keyC
Dim tmpRsa As New RSACryptoServiceProvider(cspp)
tmpRsa.PersistKeyInCsp = True
这将成功签署我的 xml。
为了验证我使用的 xml:
Dim hidePublicKey As String = HiddenPublicKey.Value
Dim keyC As String = hidePublicKey
Dim cspp As New CspParameters()
cspp.KeyContainerName = keyC
Dim tmpRsa As New RSACryptoServiceProvider(cspp)
tmpRsa.PersistKeyInCsp = True
但这不起作用。只有当我再次使用私钥时它才有效。
使用相同的私钥签名和验证还是使用公钥进行签名和验证是一种好习惯?