相关疑难解决方法(0)

为什么我的密钥标识符不匹配?

我正在尝试解密S/MIME电子邮件(最初通过Outlook发送),为此,我正在使用bouncycastle API.不过,我遇到了麻烦.

我在Windows证书存储区中拥有收件人的证书.我之前用它将签名和加密的电子邮件发送给另一方,然后他们用它向我发送加密回复.然后我将证书(带私钥)导出为.pfx文件,然后将此pfx文件加载到Java KeyStore中.但是,它不起作用,我怀疑这是因为主题密钥标识符不匹配.

这是我用来从KeyStore获取主题密钥id的代码:

KeyStore ks = KeyStore.getInstance("PKCS12");
char[]   pw = "password".toCharArray();

ks.load(new FileInputStream("d:\\cert_priv_key.pfx"), pw);

Enumeration en = ks.aliases();

while( en.hasMoreElements() )
{
    String alias = (String)en.nextElement();
    System.out.println(alias);

    if( ks.isKeyEntry(alias) )
    {
        Certificate[]   chain = ks.getCertificateChain(alias);
        X509Certificate cert  = (X509Certificate)chain[0];

        byte[] id = cert.getExtensionValue("2.5.29.14");

        System.out.println("  " + toHex(id));
    }
}
Run Code Online (Sandbox Code Playgroud)

这将打印出以下密钥标识符:

04 16 04 14 88 ed bb 7c 64 7b 41 63 48 0a 24 40 2b 3c d0 78 72 3c 30 b3
Run Code Online (Sandbox Code Playgroud)

但是,当我检查Windows证书存储区时,密钥标识符是不同的:

88 ed bb …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle certificate smime

7
推荐指数
1
解决办法
4710
查看次数

标签 统计

bouncycastle ×1

certificate ×1

java ×1

smime ×1