Tópico de Conteúdo:
- Introdução
- Conhecimento pré-requisito
- Equação de Cifra Afim
- Criptografia de criptografia afim usando Python
- Prova de conceito
- Conclusão
- 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 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.
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.
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.
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 -hSe 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.