Эквивалент команды pgp в надувном замке - PullRequest
0 голосов
/ 27 февраля 2020

Кто-нибудь знает, что будет эквивалентно следующей команде (GnuPG 2.17.2) в надувном замке в Java?

gpg -e -r "recipient" --output output.gpg input.zip

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Взгляните на пример оживленного замка gpg , кажется, он идеально соответствует вашему вопросу.

0 голосов
/ 13 марта 2020

Создание сертификата и закрытого ключа

public static byte[] encryptData(byte[] data, X509Certificate encryptionCertificate) throws CertificateEncodingException, CMSException, IOException {

byte[] encryptedData = null;
if (null != data && null != encryptionCertificate) {
    CMSEnvelopedDataGenerator cmsEnvelopedDataGenerator
      = new CMSEnvelopedDataGenerator();

    JceKeyTransRecipientInfoGenerator jceKey 
      = new JceKeyTransRecipientInfoGenerator(encryptionCertificate);
    cmsEnvelopedDataGenerator.addRecipientInfoGenerator(transKeyGen);
    CMSTypedData msg = new CMSProcessableByteArray(data);
    OutputEncryptor encryptor
      = new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES128_CBC)
      .setProvider("BC").build();
    CMSEnvelopedData cmsEnvelopedData = cmsEnvelopedDataGenerator
      .generate(msg,encryptor);
    encryptedData = cmsEnvelopedData.getEncoded();
}
return encryptedData;}

Создание объекта JceKeyTransRecipientInfoGenerator с использованием сертификата получателя.

Затем создание нового объекта CMSEnvelopedDataGenerator и добавление в него генератора информации о получателе.

Затем используйте класс JceCMSContentEncryptorBuilder для создания объекта OutputEncrytor с использованием алгоритма AES CB C.

Шифтор используется позже для создания объекта CMSEnvelopedData, который инкапсулирует зашифрованное сообщение.

Наконец, закодированное представление конверта возвращается в виде байтового массива.

Получить окончательный байтовый массив, записанный в файл.

...