Criptografia de criptografia afim usando Python

Criptografia De Criptografia Afim Usando Python



Tópico de Conteúdo:

  1. Introdução
  2. Conhecimento pré-requisito
  3. Equação de Cifra Afim
  4. Criptografia de criptografia afim usando Python
  5. Prova de conceito
  6. Conclusão
  7. Perguntas frequentes (FAQ)

A cifra Afim representa um tipo específico de cifra de substituição, enquadrando-se na categoria de cifras monoalfabéticas. Ao contrário da mais famosa cifra de César, que desloca cada letra do texto simples por um número fixo de três posições, a cifra Afim emprega duas chaves (a e b). A escolha das chaves deve exigir consideração especial.

Conhecimento pré-requisito

Para entender profundamente o tema de hoje, você deve entender os seguintes conceitos:







  • O Maior Divisor Comum (GCD) e número co-primo
  • Aritmética modular

Esses conceitos são explicados em detalhes no artigo anterior intitulado “Abordagem Matemática de Cifra Afim”.



Equação de Cifra Afim

Vamos começar com a fórmula para a criptografia de cifras afins:



E (x) = (ax + b) mod m
Antigo) Denota uma criptografia do índice alfabético x
a Um valor de índice da primeira chave “especial”
x Um valor de índice da letra simples
b Um valor de índice da segunda chave (valor de deslocamento adicional)
mod m As operações do módulo da quantidade total do alfabeto que é 26


Imagem alternativa e legenda : Equação de Cifra Afim





Por exemplo, queremos criptografar o texto simples “BIMANDO” com as chaves 7 e 13. Usando o seguinte índice de tabela, primeiro convertemos o texto simples em seu número correspondente:


Imagem alternativa e legenda : Numeração de índice



O texto simples “BIMANDO” é convertido em um número de indexação para “1 8 12 0 13 3 14”.


Imagem alternativa e legenda : Converter um texto simples em um valor de numeração de índice

Em seguida, aplicamos o cálculo da equação e o resultado é mostrado a seguir:


Imagem alternativa e legenda : Cifragem Afim

Assim, o texto simples “BIMANDO” é criptografado utilizando cifra Afim com chaves 7 e 13 que resulta em “URTNAIH”.

Criptografia de criptografia afim usando Python

Agora, digamos que queremos enviar uma mensagem confidencial que contém vários parágrafos. Fazer a criptografia de cifra afim com o processo manual exige muito esforço e tempo e tem uma grande chance de erro no cálculo, certo? Portanto, precisamos de um programa que automatize o processo de criptografia do Affine Cipher. A seguir está o processo passo a passo para criar um programa Python:

1. Importe as bibliotecas necessárias
Nosso programa começa importando os módulos necessários, como argparse, string e os para análise de argumentos de linha de comando, operações de string e funcionalidades relacionadas ao sistema operacional, respectivamente.

importar argparse
importar corda
importar os

2. Definindo Mapeamento Alfabético
Então, definimos o alfabeto como uma sequência de letras minúsculas do inglês. Isso é usado para mapear os caracteres durante o processo de criptografia posterior.

alfabeto = corda . ascii_lowercase

3. Função de criptografia de criptografia afim
Esta é a função central do nosso programa. Ele pega o texto de entrada e duas chaves, “a” e “b”, e aplica a criptografia de cifra afim ao texto, preservando a estrutura do texto.

definição affine_cipher_encryption ( texto , a , b ) :
texto_criptografado = ''
para Caracteres em texto:
se Caracteres. mais baixo ( ) em alfabeto:
se Caracteres. é superior ( ) :
texto_criptografado + = cr ( ( ( a * ( palavra ( Caracteres. mais baixo ( ) ) - 97 ) +b ) % 26 ) + 65 )
outro :
texto_criptografado + = cr ( ( ( a * ( palavra ( Caracteres ) - 97 ) +b ) % 26 ) + 97 )
outro :

4. Verificação Principal Condicional
Neste código de bloco, verifique se ele está sendo executado como programa principal. Ele configura o analisador de argumentos com descrições do script e seus argumentos. O argumento necessário é apenas um caminho de entrada de um arquivo de texto. Quando não especificamos o caminho de saída, queremos definir um padrão para o nome do arquivo de entrada com “_encrypted” anexado a ele. Para o argumento “chaves”, queremos que ele seja formatado como “a,b”. Mas se definirmos, o padrão será 5 e 8.

se __nome__ == '__principal__' :
analisador = argparse. ArgumentParser ( descrição = 'Criptografia de cifra afim de um arquivo de texto' )
analisador . add_argumento ( 'Arquivo de entrada' , ajuda = 'Caminho para o arquivo de texto de entrada' )
analisador . add_argumento ( '-k' , '--chaves' , tipo = str , padrão = '5,8' , ajuda = 'Chaves para a Cifra Afim no formato 'a,b'' )
argumentos = analisador . parse_args ( )

a , b = mapa ( interno , argumentos. chaves . dividir ( ',' ) )

com abrir ( argumentos. Arquivo de entrada , 'r' ) como arquivo :
texto = arquivo . ler ( )

# Extraia o nome do arquivo do caminho do arquivo de entrada
nome_do_arquivo_de_entrada , extensão = os . caminho . texto dividido ( argumentos. Arquivo de entrada )
arquivo_de_saída_padrão = nome_do_arquivo_de_entrada + '_criptografado' + extensão

# Criptografe o texto usando a cifra afim
texto_criptografado = affine_cipher_encryption ( texto , a , b )

# Grave o texto criptografado em um novo arquivo
com abrir ( arquivo_de_saída_padrão , 'Em' ) como arquivo :
arquivo . escrever ( texto_criptografado )

Finalmente, uma vez concluída a função de criptografia, nosso programa salvará a saída com a mesma extensão do arquivo de entrada.

Agora, salve-o em “affine_cipher.py”. Agora, execute o programa digitando o seguinte comando:

python affine_cipher. py -h

Se você não encontrar nenhum erro, a saída será semelhante à imagem a seguir:


Imagem alternativa e legenda : Programa Python de criptografia afim

Prova de conceito

Temos uma mensagem confidencial com o seguinte nome “message.txt” e queremos transmiti-la aos nossos membros:


Imagem alternativa e legenda : Texto simples

Então, usamos o programa que criamos antes de criptografar esta mensagem usando cifra Afim com as chaves 3 e 7. O comando é o seguinte:

python affine_cipher. py mensagem. TXT -k 3 , 7


Imagem alternativa e legenda : Programa Python de criptografia afim

Na velocidade de um piscar de olhos, a mensagem criptografada é criada e salva com sucesso em “message_encrypted.txt”. Vamos verificar como é a mensagem:


Imagem alternativa e legenda : Texto cifrado afim

Como você pode ver, a mensagem está embaralhada. Somente nossos membros que conhecem o método de cifra e suas chaves são capazes de descriptografar a mensagem.

Tente você mesmo

Baixe o código-fonte deste programa em nossa página GitHub em https://github.com/bimando/Affine-Cipher .

Conclusão

Concluindo, o método de criptografia de cifras afins, uma forma de cifra de substituição monoalfabética, oferece maior segurança através da utilização de duas chaves, exigindo uma consideração cuidadosa durante a seleção da chave. Compreender conceitos como Máximo Divisor Comum (MDC), números coprimos e aritmética modular é essencial para compreender os meandros da cifra afim.

A equação da cifra afim, E(x) = (a.x + b) mod m, serve como ferramenta fundamental para criptografia onde “a” e “b” representam as chaves e “x” simboliza o índice da letra do texto simples. A implementação de um programa Python automatizado para o processo de criptografia de cifra Affine foi demonstrada para agilizar as tarefas de criptografia em grande escala de forma eficiente. O programa incorpora as principais funcionalidades, incluindo importação de bibliotecas, mapeamento alfabético, uma função de criptografia e análise de argumentos de linha de comando para caminhos de entrada e saída. Notavelmente, o script permite as configurações padrão para as chaves e nomes de arquivos de saída para facilitar um processo de criptografia contínuo.

Perguntas frequentes (FAQ)

Q1: O que é a cifra Afim e como ela difere da cifra de César?

A1: A cifra Afim é um tipo de cifra de substituição monoalfabética que emprega duas chaves, “a” e “b”, para criptografia. Em contraste, a cifra de César utiliza um deslocamento fixo de três posições para cada letra no texto simples.

Q2. Quais são os pré-requisitos para compreender a cifra Afim?

A2: Para compreender completamente a cifra Afim, é crucial ter uma compreensão de conceitos como o Máximo Divisor Comum (GCD), números coprimos e aritmética modular.

Q3: Como posso criptografar uma mensagem usando a cifra Affine em Python?

A3: Para automatizar o processo de criptografia de cifras afins, você pode utilizar o programa Python descrito no artigo. O programa criptografa com eficiência entradas de texto em grande escala, simplificando o procedimento de criptografia. O artigo fornece instruções passo a passo sobre como importar as bibliotecas, definir o mapeamento do alfabeto, criar a função de criptografia e analisar os argumentos da linha de comando para caminhos de entrada e saída.