-3
我已經研究了許多線程來理解如何創建一個PKCS加密文件,但遺憾的是沒有任何線程爲我工作。使用PKCS的公鑰加密
我正在處理一個需求,我必須使用彈跳城堡(jdk 8)或任何其他API(如果可用)生成PKCS文件(p7擴展名)。如果任何人有一個生成PKCS加密文件的工作示例,那將很棒。
我已經研究了許多線程來理解如何創建一個PKCS加密文件,但遺憾的是沒有任何線程爲我工作。使用PKCS的公鑰加密
我正在處理一個需求,我必須使用彈跳城堡(jdk 8)或任何其他API(如果可用)生成PKCS文件(p7擴展名)。如果任何人有一個生成PKCS加密文件的工作示例,那將很棒。
可能這個問題不是很清楚,但我想出了使用彈性城堡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信封。