Criptografia com Python (03)

Flávio Conca
Curso de Programação Python
3 min readMar 30, 2020

--

O padrão Fernet

O pacote CRYPTOGRAPHY e vários outros pacotes para a implementação de algoritmos criptográficos seguros. O Python inclui um pacote que fornece funções de criptografia primitiva com Fernet que garante que uma mensagem criptografada não possa ser manipulada ou lida sem a chave.

Fernet é uma implementação de criptografia autenticada simétrica, também conhecida como “chave secreta”. Criptografia simétrica é quando uma chave é usada para criptografar e descriptografar uma mensagem, para que quem quer que seja criptografado possa descriptografá-la.

A única maneira de descriptografar a mensagem é saber o que foi usado para criptografá-la, ou seja, como se precisasse de uma senha, uma chave.

Para usar criptografia simétrica, usaremos a classe Fernet e a instalação do pacote é feita usando o PIP com um simples comando:

pip install cryptography
O resultado da instalação deve ter esta resposta.

Este é um dos padrões mais seguros, pois o Fernet gera uma chave para que possa haver uma descriptografia segura. É bem simples!

Existem duas maneiras principais de obter uma chave:

  1. Você pode gerar uma nova chave ou;
  2. Usar uma que foi gerada anteriormente. Ao usar essas chaves para criptografar, mantenha-as em segurança, se você as perder, não poderá descriptografar sua mensagem.

Para gerar uma nova chave aleatória, vamos importar o Fernet do pacote Cryptography e gerar uma nova chave.

from cryptography.fernet import Fernet #IMPORTA MÓDULO
chave = Fernet.generate_key() #GERA UMA CHAVE RANDÔMICA
print (chave)

A cada vez que rodar este código, vai ter uma chave nova. A variável “chave” agora terá o valor de uma chave codificada em base64.

Armazenando Chave no arquivo .key

Uma maneira de manter suas chaves seguras é mantê-las em um arquivo. Para fazer isso, podemos simplesmente criar ou substituir um arquivo e colocar a chave nele. Vamos gerar um arquivo chamado chave.key que vai guardar a sua chave em formato texto para ser usada posteriormente.

file = open('chave.key', 'wb')
file.write(chave)
file.close()

Agora, o arquivo foi salvo no diretório que está salvo junto do seu arquivo.

Acessando e Lendo o arquivo da chave .key

Você já salvou sua chave usando o método que eu mostrei, agora você poderá ler a chave novamente usando o código a seguir.

file = open('chave.key', 'rb')
chave_lida = file.read()
file.close()

Se você fez tudo até aqui, o seu código vai fazer um ENCRYPT, salvar em uma variável o valor randômico de uma chave, escrever e salvar em um arquivo binpario de texto chamado chave.key. Agora, vamos deixar redondo.

Vamos criar a chave, salva a chave criada em um arquivo e ler achave que foi criada e armazenado no arquivo .key d euma vez só:

from cryptography.fernet import Fernetchave = Fernet.generate_key() # GERA UMA CHAVE RANDÔMICAfile = open('chave.key', 'wb')
file.write(chave)
file.close()
print()
print("A CHAVE ABERTA É: ")
print(chave)
print()
file = open('chave.key', 'rb')
chave_lida = file.read()
file.close()
print()print("A CHAVE LIDA É: ")
print(chave_lida)
print()

E agora o resultado:

Pronto!
Legal, ne?

No próximo capítulo, vai aprender muito mais!

--

--