使用PKCS进行公钥加密

时间:2017-05-24 13:24:09

标签: java aes public-key-encryption

我已经研究了许多线程来了解如何创建PKCS加密文件,但遗憾的是没有一个线程适合我。

我正在制定一项要求,我必须使用bounce castle(jdk 8)或任何其他API(如果可用)生成PKCS文件(p7扩展名)。如果有人有一个生成PKCS加密文件的工作示例,那就太棒了。

1 个答案:

答案 0 :(得分:0)

可能问题不是很清楚,但我想出了使用充气城堡API创建PKCS信封的方法。我在这里发布答案,对某人可能有帮助。

import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
import org.bouncycastle.cms.CMSAlgorithm;
import org.bouncycastle.cms.CMSEnvelopedData;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.bc.BcRSAKeyTransRecipientInfoGenerator;
import org.bouncycastle.cms.jcajce.JceCMSContentEncryptorBuilder;
import org.bouncycastle.operator.OutputEncryptor;

// Create the pkcs #7 envelop and add content to it
            CMSEnvelopedDataGenerator fact = new CMSEnvelopedDataGenerator();
            fact.addRecipientInfoGenerator(
                    new BcRSAKeyTransRecipientInfoGenerator(new JcaX509CertificateHolder((X509Certificate) cert)));
            OutputEncryptor encryptor = new JceCMSContentEncryptorBuilder(CMSAlgorithm.DES_EDE3_CBC).setProvider("BC")
                    .build();
            CMSProcessableByteArray content = new CMSProcessableByteArray(zipdata);

            CMSEnvelopedData envdata = fact.generate(content, encryptor);
            byte[] enveloped = envdata.getEncoded();

'cert'是X509证书,您可以创建自签名证书或CA证书。 'zipdata'是zip文件的字节数组内容,'enveloped'是包含zip数据的字节数组PKCS envelop。