2017-05-24 12 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 envelop입니다.