Есть ли хорошая библиотека шифрования GnuPG для Java/Scala?[закрыто]

StackOverflow https://stackoverflow.com/questions/1455037

  •  12-09-2019
  •  | 
  •  

Вопрос

Я хотел бы иметь возможность шифровать файлы на диске и/или данные в памяти с помощью GnuPG из приложения Java.Если возможно, я бы хотел избежать системных вызовов инструментов командной строки GPG.

Есть ли рекомендуемая библиотека или можете ли вы порекомендовать лучший подход к шифрованию GPG из Java (или Scala)?

Я разрабатываю и собираюсь запустить приложение в среде Linux, хотя кроссплатформенное решение было бы предпочтительнее.

Это было полезно?

Решение

Вы можете попробовать вызвать JAVA API BouncyCastle.org.

Его документация упоминает:

Пакет Bouncy Castle Crypto представляет собой реализацию криптографических алгоритмов на языке Java.

У тебя здесь пример openpgp ByteArrayHandler.

Там могут быть некоторые несовместимость между шифрованием BouncyCastle и шифрованием GnuGP однако, поскольку BouncyCastle не использует GnuPG, а реализует OpenPGP (RFC2440) на Java.

Другие советы

Недавно мне пришлось работать над шифрованием-дешифрованием GPG, и я обнаружил, что библиотека PGP BountyCastle помогает.Эти шаги были

1) Добавьте версию в свойства pom.xml.

        <org.bouncycastle.version>1.46</org.bouncycastle.version>

2) Добавьте следующие зависимости

        <!-- Dependency for PGP and GPG Encryption-Decryption -->
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcmail-jdk15</artifactId>
            <version>${org.bouncycastle.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpg-jdk15</artifactId>
            <version>${org.bouncycastle.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15</artifactId>
            <version>${org.bouncycastle.version}</version>
        </dependency>

3) В класс реализации добавлен провайдер с Java Security

         Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

4) Остальная часть кода представляла собой простую реализацию Java.

    File encryptedFile = new File(encryptedFileName);
    byte[]  encryptedByteArray = FileUtils.readFileToByteArray(inputFile);      
    byte[] decryptedByteArray = ByteArrayHandler.decrypt(encryptedByteArray, passPhrase.toCharArray());
    String decryptedString = new String(decryptedByteArray);

Надеюсь, это поможет.

Есть https://github.com/smartrevolution/gnupg-for-java который основан на gpgme и работает поверх GnuPG 1.4.Мы обновляем его для GnuPG 2.x и используем в нашем приложении для Android.Вы можете получить код для них здесь:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top