Criptografia de arquivos utilizando BouncyCastle (PGP)

Jéssica Celestino
2 min readOct 21, 2024

--

Neste artigo, exploremos a implementação de um sistema de criptografia em Java, utilizando a biblioteca BouncyCastle. Antes de tudo precisamos entender a diferença entre uma criptografia Simétrica e Assimétrica.

Criptografia Simétrica

É um método de criptografia em que uma única chave é usada tanto para criptografar quanto para descriptografar os dados. Essa chave deve ser compartilhada entre o remetente e o destinatário de maneira segura, pois qualquer pessoa que tenha essa chave conseguirá acessar os dados.

Criptografia Assimétrica

Criptografia Assimétrica é um método em que duas chaves diferentes são utilizadas: uma chave pública e uma chave privada. A chave pública é compartilhada abertamente, enquanto a chave privada é mantida em segredo.

Exemplo Prático

Neste exemplo, utilizaremos a criptografia assimétrica para demonstrar como criptografar e descriptografar arquivos de maneira prática e segura.

Para criar as classes de criptografia e descriptografia, utilizamos exemplos disponibilizados pela própria BouncyCastle, que podem ser encontrados em: BouncyCastle PGP Examples. Nessa URL, encontramos duas classes importantes para nosso teste: KeyBasedLargeFileProcessor.java e PGPExampleUtil.java.

Implementação

Com base nesses exemplos, criamos uma classe principal (main) como no exemplo abaixo:

public static void main(String[] args) throws IOException, PGPException, NoSuchProviderException {

String outputFileName = "";
String inputFileName = "";
String publicKeyFileName = "";
String privateKeyFileName = "";

KeyBasedFileProcessor.encryptFileWithStream(outputFileName, inputFileName, publicKeyFileName, true, true);
KeyBasedFileProcessor.decryptFileWithStream(outputFileName, privateKeyFileName, inputFileName);
}

Nesse exemplo, o método encryptFileWithStream é utilizado para gerar um arquivo criptografado com a chave pública, e o método decryptFileWithStream permite descriptografar o arquivo utilizando a chave privada correspondente.

Usar técnicas de criptografia de arquivos, como a implementação de PGP com BouncyCastle, melhora significativamente a segurança dos dados. Essa abordagem em camadas garante que informações sensíveis permaneçam confidenciais, autênticas e livres de alterações, mesmo em ambientes inseguros.

Código-Fonte

O código completo está disponível no GitHub: POC BouncyCastle.

Referências

--

--

No responses yet