Criptografia com Python

Criptografia com Python

A criptografia, a ciência das cifras, é tornada real com a ajuda da codificação. Não podemos decidir uma linguagem de programação para ser melhor ou pior do que outra. No entanto, a seleção de uma biblioteca de criptografia apropriada faz toda a diferença.

O Python fornece algumas bibliotecas e módulos muito sofisticados para criptografia e descriptografia dos dados. Alguns deles são criptografia, hashlib, simples críptio, etc. O artigo demonstra o uso de práticas criptográficas modernas em Python com a ajuda da biblioteca de criptografia, ilustrando como criptografar e descriptografar seqüências de texto e arquivos de texto.

Instalação da biblioteca de criptografia

A criptografia é uma biblioteca em Python que fornece várias maneiras criptográficas para os usuários; Um deles é uma criptografia e descriptografia de dados fáceis. Use o seguinte comando para instalar a biblioteca de criptografia.

ubuntu@ubuntu: ~ $ pip install criptografia

Criptografia de texto

Importando Fernet

Após a instalação bem -sucedida, o módulo Fernet é importado da biblioteca. A função assume a responsabilidade da criptografia, bem como a descriptografia de dados. Para isso, crie um arquivo python e importe o módulo Fernet da biblioteca de criptografia da seguinte forma:

da criptografia.Fernet Import Fernet

Chave de geração

Agora gere a chave de autenticação definindo uma função ou simplesmente usando um gerador de samnet em python. O samnet.A função Generate_key () gerará uma chave para criptografia e descriptografia. Adicione a seguinte linha ao código:

>> key = Fernet.generate_key ()

Agora a classe Fernet será instanciada usando a chave gerada.

>> Fernet = Fernet (chave)

Criptografia de sequência de texto

A criptografia do texto agora está a apenas algumas linhas de código. Adicione as seguintes linhas para obter seu texto criptografado.

>> mensagem = “Este texto será criptografado”
>> Encrypted_Message = Fernet.Encrypt (mensagem.codificar())
>> Print ('String de texto original:', mensagem)
>> Print ('Mensagem após criptografia:' Encrypted_Message)

A execução do código Python acima gera uma sequência indecifrável de caracteres alfanuméricos, como mostrado abaixo. É a forma mais simples de criptografia de string de texto com a ajuda da biblioteca de criptografia em Python. Em primeiro lugar, ele codifica a string para criptografá -la mais tarde usando a receita de criptografia de criptografia.

A descriptografia da sequência de texto

Após a criptografia de string via método de criptografia de furão, descriptografar o texto de volta ao seu formulário original. A descripção bem -sucedida garante que o destinatário possa decodificar e acessar as informações sem problemas.

Portanto, para descriptografia suave, os módulos de samnet também tornam uma função de descriptografia fácil. Adicionar essas duas linhas ao seu arquivo python descriptografará a mesma mensagem à sua forma inicial suavemente.

Decrypted_message = Fernet.descriptografar (Encrypted_message).decodificar()
Print ('String de texto descriptografado:', descriptografado_message)

As linhas de código acima usam a mesma instância de Fernet que usa a chave salva na memória do programa para descriptografia. O samnet.A função decrypt () retorna a sequência codificada após a descriptografia, pois foi codificada antes da criptografia. Agora a função decodificadora retorna a sequência codificada ao seu formulário original.

Criptografia de arquivo

Assim como a criptografia de texto, importe o módulo Fernet para criptografia de arquivo e geração de chaves. Importar o módulo Fernet da biblioteca de criptografia.

da criptografia.Fernet Import Fernet

Geração de chaves

Como mostrado acima, use a função do gerador de chaves de samnet para gerar a chave. Embora seja uma abordagem melhor testar a criptografia e descriptografia dos textos curtos, não é praticamente útil, pois perde a chave permanentemente após o término do programa. Portanto, recomenda -se armazenar a chave em um arquivo com segurança para que possa ser lido e utilizado sempre que necessário.

Ative isso definindo uma função de gerador -chave no código que grava a chave para um arquivo. Isso também pode ser feito armazenando a tecla Fernet em um arquivo de texto. Gerar a chave e armazená -la em um arquivo para uso futuro.

>> key = Fernet.generate_key ()
>> com o aberto ('keyfile.chave ',' wb ') como keyfile:
keyfile.Escreva (chave)

Este código gerará uma string alfanumérica aleatória e a armazenará no keyfile.Arquivo -chave.

Criptografia

Use a seguinte linha de código para ler a chave já armazenada para criptografia de arquivo.

>> com o aberto ('keyfile.chave ',' rb ') como keyfile:
>> key = keyfile.ler()

Usando a chave para a instância de Fernet:

>> Fernet = Fernet (chave)

Abra e leia o arquivo a ser criptografado e criptografar os dados no arquivo usando a criptografia Fernet:

>> Com o Open (Lista.csv ',' rb ') como original_file:
original_data = original_file.ler()
>> Encrypted_data = Fernet.Encrypt (original_data)

Agora abra o arquivo no modo de gravação e escreva os dados criptografados de volta:

>> Com o Open (Lista.CSV ',' WB ') como criptografado_file:
Encrypted_file.Write (Encrypted_data)

A execução do código acima substituirá os dados originais do arquivo por uma maior parte de strings alfanuméricos.

Descriptografar o arquivo

Use o módulo Fernet novamente para descriptografar o arquivo com a mesma chave. O código a seguir primeiro lê os dados do arquivo criptografado e o restaura em seu formulário original com a função descriptografada.

>> Fernet = Fernet (chave)
>> Com o Open (Lista.CSV ',' RB ') como criptografado_file:
Encrypted_data = Encrypted_file.ler()
>> Decrypted_data = Fernet.descriptografar (Encrypted_data)
>> Com o Open (Lista.CSV ',' WB ') como descriptografado_file:
descriptografado_file.Write (Decrypted_data)

Conclusão

A biblioteca de criptografia é uma das muitas bibliotecas e módulos que o Python oferece para comunicação e criptografia seguras. O módulo Fernet da biblioteca fornece um gerador de teclas embutido e fornece funções de criptografia e descriptografia para uma sequência de dados e arquivos grandes.