Java 01 - Jasypt: Protegendo dados sensíveis com criptografia.
Tags: java, encrypt, programming, tutorial
Published: 2023-05-30 16:15:45

A segurança de dados é um aspecto crítico em qualquer aplicativo ou sistema, especialmente quando se trata de informações sensíveis, como senhas, números de cartão de crédito ou dados pessoais. A criptografia é uma técnica amplamente utilizada para proteger esses dados confidenciais, tornando-os ininteligíveis para qualquer pessoa que não possua a chave correta. Uma das bibliotecas populares para criptografia em Java é o Jasypt.

## **O que é Jasypt?**

Jasypt é uma biblioteca de criptografia em Java que fornece recursos abrangentes para proteger dados sensíveis em aplicativos. Ela é fácil de usar e oferece suporte a vários algoritmos criptográficos, incluindo AES (Advanced Encryption Standard), DES (Data Encryption Standard), RSA (Rivest-Shamir-Adleman), entre outros.

Desenvolvida por Daniel Fernández, a biblioteca Jasypt foi criada visando simplificar o processo de criptografia em Java e fornecer uma camada adicional de segurança aos aplicativos.


## Como usar o Jasypt?

**Implementação nas dependências do seu Projeto**
- Site do [Jasypt ](http://www.jasypt.org/index.html) onde pode encontrar todas as informações


 Primeiramente você tem que adicionar no seu pom.xml a dependência do jasypt como pode ver a baixo.


```
  <dependencies>
	  <dependency>
		  <groupId>org.jasypt</groupId>
		  <artifactId>jasypt</artifactId>
		  <version>1.9.3</version>
	  </dependency>
  </dependencies>
```

## Usando uma criptografia simples 

Vamos usar o exemplo de que queremos criptografar uma senha.


01) O primeiro passo é importar a classe **BasicTextEncryptor** da biblioteca do Jasypt

```
import org.jasypt.util.text.BasicTextEncryptor;
```


02) Tenha em mente que criamos a senha com algum programa, para deixar mais simples vou criar uma string como exemplo.

```
String password = "minha_senha";
```
		


03) Cria-se uma nova instância da classe **BasicTextEncryptor**
	
```
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
```



04) O Próximo passo é criar uma chave de criptografia para o objeto textEcrpytor usando o método setPassword.

``` 
textEncryptor.setPassword("minha_chave_de_criptografia");
```




05) Em seguida utilizamos o método encrypt para criptografar esta senha. 

```
String encryptedPassword = textEncryptor.encrypt(password);
```
		


Pronto! Agora temos uma senha criptografada, lembrando isso é a maneira mais simples de utilizar essa biblioteca.

06)Pode-se salvar em um arquivo essa senha criptografada ou simplesmente mostrar no console para ver se esta funcionando.

```
  System.out.println("Senha criptografada: " + encryptedPassword);
```



07) Para descriptografar dados previamente criptografados, você precisará utilizar a mesma chave ou algoritmo de criptografia usado na etapa de criptografia, e depois ao invéz de utilizar o método encypt utilizamos o decrypt.

Exemplo de um programa pronto simples.

```
import org.jasypt.util.text.BasicTextEncryptor;

public class EncryptionExample {

    public static void main(String[] args) {
        String password = "minha_senha";
        String chaveDeCriptografia = "minha_chave_de_criptografia";

        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        textEncryptor.setPassword(chaveDeCriptografia);

        String encryptedText = textEncryptor.encrypt(password);
        System.out.println("Texto criptografado: " + encryptedText);

        String decryptedText = textEncryptor.decrypt(encryptedText);
        System.out.println("Texto descriptografado: " + decryptedText);
    }
}
```
## Para quem quiser se aprofundar mais.

Vou deixar um projeto do meu github onde criei  uma aplicação que gera senhas com base nas condições desejadas e as salva em um bloco
de notas criptografado. Em seguida, permite descriptografar as senhas e criar um novo arquivo
que será excluído em 30 segundos, contendo todas as senhas.

https://github.com/DaviJonck/Password-Generator-and-Encryptor