Introdução
Neste projeto, você aprenderá como implementar o algoritmo de Criptografia Afim (Affine Encryption) em Python. A Cifra Afim (Affine Cipher) é um tipo de cifra de substituição que combina as características da cifra de deslocamento (shift cipher) e da cifra multiplicativa (multiplier cipher). Ela utiliza uma função criptográfica para criptografar uma letra por letra, fornecendo uma maneira simples, porém eficaz, de criptografar e descriptografar texto.
👀 Pré-visualização
Sample 1: welcome - > oclsaqc
Sample 2: welcome - > oclsaqc
Sample 3: Qrwe - > Qroc
Sample 4: None - > None
🎯 Tarefas
Neste projeto, você aprenderá:
- Como implementar a função de criptografia afim em Python
- Como testar a função de criptografia afim com exemplos de entrada
- Como criptografar a entrada do usuário usando a função de criptografia afim
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Compreender os princípios básicos da Cifra Afim (Affine Cipher)
- Implementar o algoritmo de criptografia afim em Python
- Criptografar e descriptografar texto usando a função de criptografia afim
- Testar a função de criptografia afim com várias entradas
Implementar a Função de Criptografia Afim
Nesta etapa, você aprenderá como implementar a função de criptografia afim em Python. Siga os passos abaixo para completar esta etapa:
- Abra o arquivo
affine.pyem seu editor de texto. - Dentro da função
affine_encryption(text), adicione o seguinte código:
def affine_encryption(text: str) -> str:
if text is None or text == "":
return None
a = 5
b = 8
m = 26
encryption_text = ""
for char in text:
if "A" <= char <= "Z" or "a" <= char <= "z":
char = char.lower()
x = ord(char) - ord("a")
y = (a * x + b) % m
encryption_text += chr(y + ord("a"))
else:
encryption_text += char
return encryption_text
Explicação:
- A função primeiro verifica se o
textde entrada éNoneou uma string vazia. Se for, ela retornaNone. - A função então define os valores de
a,bemconforme exigido pela fórmula de criptografia afim. - Ela itera por cada caractere no
textde entrada. - Se o caractere for uma letra inglesa de largura normal (entre 'A' e 'Z', ou 'a' e 'z'), ela converte o caractere para minúsculo, calcula o valor numérico correspondente
x, aplica a fórmula de criptografia afimy = (a * x + b) % me anexa o caractere criptografado à stringencryption_text. - Se o caractere não for uma letra inglesa de largura normal, ele é adicionado à string
encryption_textsem qualquer modificação. - Finalmente, a função retorna a string
encryption_text.
- Salve o arquivo
affine.py.
Testar a Função de Criptografia Afim
Nesta etapa, você testará a função affine_encryption() com as entradas de exemplo fornecidas.
- No arquivo
affine.py, adicione o seguinte código ao final do arquivo:
if __name__ == "__main__":
## Sample 1
text = "welcome"
encryption_text = affine_encryption(text)
print(f"Sample 1: {text} -> {encryption_text}")
## Sample 2
text = " welcome"
encryption_text = affine_encryption(text)
print(f"Sample 2: {text} -> {encryption_text}")
## Sample 3
text = " Qrwe"
encryption_text = affine_encryption(text)
print(f"Sample 3: {text} -> {encryption_text}")
## Sample 4
text = None
encryption_text = affine_encryption(text)
print(f"Sample 4: {text} -> {encryption_text}")
- Salve o arquivo
affine.py. - Abra um terminal ou prompt de comando, navegue até o diretório que contém o arquivo
affine.pye execute o seguinte comando:
python3 affine.py
Isso executará a função affine_encryption() com as entradas de exemplo fornecidas e imprimirá os resultados.
Verifique se a saída corresponde aos resultados esperados:
Sample 1: welcome -> oclsaqc
Sample 2: welcome -> oclsaqc
Sample 3: Qrwe -> Qroc
Sample 4: None -> None
Se a saída corresponder aos resultados esperados, sua função affine_encryption() está funcionando corretamente.
Criptografar a Entrada do Usuário
Nesta etapa, você modificará o arquivo affine.py para permitir que o usuário insira um texto e o criptografe usando a função affine_encryption().
- No arquivo
affine.py, substitua o código existente no final do arquivo (ou seja,if __name__ == "__main__":e a parte que o segue) pelo seguinte código:
if __name__ == "__main__":
text = input("Enter the text to encrypt: ")
encryption_text = affine_encryption(text)
if encryption_text is None:
print("Error: Input text is empty.")
else:
print(f"Encrypted text: {encryption_text}")
Explicação:
- O código solicita ao usuário que insira o texto a ser criptografado.
- Em seguida, ele chama a função
affine_encryption()com a entrada do usuário e armazena o resultado na variávelencryption_text. - Se
encryption_textforNone(o que significa que o texto de entrada estava vazio), ele imprime uma mensagem de erro. - Caso contrário, ele imprime o texto criptografado.
- Salve o arquivo
affine.py. - Abra um terminal ou prompt de comando, navegue até o diretório que contém o arquivo
affine.pye execute o seguinte comando:
python3 affine.py
- Quando solicitado, insira um texto para ser criptografado e observe a saída.
Parabéns! Você concluiu a implementação da função de criptografia afim e a testou com várias entradas.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



