2017-05-24 24 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エンベロープです。

関連する問題