2017-05-24 75 views
-3

我已經研究了許多線程來理解如何創建一個PKCS加密文件,但遺憾的是沒有任何線程爲我工作。使用PKCS的公鑰加密

我正在處理一個需求,我必須使用彈跳城堡(jdk 8)或任何其他API(如果可用)生成PKCS文件(p7擴展名)。如果任何人有一個生成PKCS加密文件的工作示例,那將很棒。

回答

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信封。