语句1:
SubjectKeyIdentifier sid = cert.getSubjectKeyIdentifier();
cert 是JAVA的cfca.sadk.x509.certificate.X509Cert。
.NET 这边是 X509Certificate2 cert ,先转成BC库的 X509。从X509的公钥中提取sid。
// 首先转换为 BouncyCastle 的 X509Certificate var bcCert = new X509CertificateParser().ReadCertificate(cert.GetRawCertData()); // 主题密钥标识符 (SKI)。 JAVA BC 库写法:SubjectKeyIdentifier sid = cert.getSubjectKeyIdentifier(); SubjectKeyIdentifier sid = new Org.BouncyCastle.X509.Extension.SubjectKeyIdentifierStructure(bcCert.GetPublicKey());
语句2:
AlgorithmIdentifier keyEncAlg = cert.getCertStructure().getSubjectPublicKeyInfo().getAlgorithm();
.NET这边:
AlgorithmIdentifier keyEncAlg= bcCert.CertificateStructure.SubjectPublicKeyInfo.AlgorithmID;
语句3:
CMSEnvelopedData cmsEnData = new CMSEnvelopedData(bEnvelop); ContentInfo info = cmsEnData.toASN1Structure();
这里的cmsEnData.toASN1Structure() 其实就是 ContentInfo
CmsEnvelopedData cmsEnData = new CmsEnvelopedData(bEnvelop); Org.BouncyCastle.Asn1.Cms.ContentInfo info = cmsEnData.ContentInfo;
语句4:
获取3DES的OID:
ASN1ObjectIdentifier tOID = (ASN1ObjectIdentifier)PKCS7EnvelopedData.MECH_OID.get(symmetricAlgorithm); AlgorithmIdentifier algId = getAlgorithmIdentifier(contentEncryptionAlg, tOID);
C#写法,IV_8是byte[]
DerOctetString doct = new DerOctetString(IV_8);
// 创建 AlgorithmIdentifier(可用于证书扩展、加密参数等) AlgorithmIdentifier algId = new AlgorithmIdentifier( PkcsObjectIdentifiers.DesEde3Cbc, // OID 1.2.840.113549.3.7 doct // 可选参数(如 IV,这里设为 null) );
-

浙公网安备 33010602011771号