Implementando Criptografia Afim em Python

PythonBeginner
Pratique Agora

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:

  1. Abra o arquivo affine.py em seu editor de texto.
  2. 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 text de entrada é None ou uma string vazia. Se for, ela retorna None.
  • A função então define os valores de a, b e m conforme exigido pela fórmula de criptografia afim.
  • Ela itera por cada caractere no text de 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 afim y = (a * x + b) % m e anexa o caractere criptografado à string encryption_text.
  • Se o caractere não for uma letra inglesa de largura normal, ele é adicionado à string encryption_text sem qualquer modificação.
  • Finalmente, a função retorna a string encryption_text.
  1. 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.

  1. 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}")
  1. Salve o arquivo affine.py.
  2. Abra um terminal ou prompt de comando, navegue até o diretório que contém o arquivo affine.py e 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().

  1. 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ável encryption_text.
  • Se encryption_text for None (o que significa que o texto de entrada estava vazio), ele imprime uma mensagem de erro.
  • Caso contrário, ele imprime o texto criptografado.
  1. Salve o arquivo affine.py.
  2. Abra um terminal ou prompt de comando, navegue até o diretório que contém o arquivo affine.py e execute o seguinte comando:
python3 affine.py
  1. 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.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar