Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Sugestões de pesquisas

Como Funciona a Cifra de Playfair com Python

#python; #criptografia; #segurança
@CanalQb Python - Cifra de Playfair
Canal Qb

O que é a Cifra de Playfair?

A Cifra de Playfair é uma técnica de criptografia clássica desenvolvida por Charles Wheatstone em 1854 e promovida por Lord Playfair. Ela utiliza uma matriz 5x5 de letras para criptografar pares de letras do texto original, tornando-a mais segura que cifras simples baseadas em substituição de letras individuais.

Como funciona a Cifra de Playfair?

O primeiro passo é criar uma matriz 5x5 com base em uma palavra-chave, excluindo a letra "J". Essa matriz é usada para transformar pares de letras do texto original segundo três regras principais:

  • Mesma linha: substitui-se cada letra pela letra à sua direita.
  • Mesma coluna: substitui-se cada letra pela que está abaixo.
  • Retângulo: cada letra do par é substituída pela letra na mesma linha da original, mas na coluna da outra.

Se houver letras repetidas no par, insere-se uma letra fictícia como "X". Se o número de letras do texto for ímpar, também se adiciona um "X" no final.

Aplicação em Python

Abaixo está um exemplo de código Python para gerar a matriz chave e cifrar um texto usando a cifra de Playfair:

import string

def gerar_matriz_chave(chave):
    chave = chave.upper().replace(" ", "")
    alfabeto = string.ascii_uppercase.replace("J", "")
    matriz_chave = []

    for letra in chave:
        if letra not in matriz_chave and letra in alfabeto:
            matriz_chave.append(letra)

    for letra in alfabeto:
        if letra not in matriz_chave:
            matriz_chave.append(letra)

    matriz_chave = [matriz_chave[i:i+5] for i in range(0, len(matriz_chave), 5)]
    return matriz_chave

def encontrar_posicao(matriz, letra):
    for i in range(len(matriz)):
        if letra in matriz[i]:
            return i, matriz[i].index(letra)

def cifrar_playfair(matriz, texto):
    texto = texto.upper().replace(" ", "")
    texto_cifrado = ""
    i = 0

    while i < len(texto):
        letra1 = texto[i]
        letra2 = texto[i + 1] if i + 1 < len(texto) else "X"

        pos1 = encontrar_posicao(matriz, letra1)
        pos2 = encontrar_posicao(matriz, letra2)

        if pos1[0] == pos2[0]:  # Mesma linha
            col1 = (pos1[1] + 1) % 5
            col2 = (pos2[1] + 1) % 5
            texto_cifrado += matriz[pos1[0]][col1] + matriz[pos2[0]][col2]
        elif pos1[1] == pos2[1]:  # Mesma coluna
            linha1 = (pos1[0] + 1) % 5
            linha2 = (pos2[0] + 1) % 5
            texto_cifrado += matriz[linha1][pos1[1]] + matriz[linha2][pos2[1]]
        else:  # Retângulo
            texto_cifrado += matriz[pos1[0]][pos2[1]] + matriz[pos2[0]][pos1[1]]

        i += 2

    return texto_cifrado

chave = "EXEMPLO"
texto = "OLA MUNDO"

matriz_chave = gerar_matriz_chave(chave)
texto_cifrado = cifrar_playfair(matriz_chave, texto)
print("Texto cifrado: " + texto_cifrado)

Conclusão

A cifra de Playfair é uma excelente introdução à criptografia e à lógica por trás dos algoritmos de segurança. Embora seja obsoleta para uso prático moderno, sua implementação é uma ótima prática para iniciantes em programação, especialmente com linguagens como Python.

Para mais informações sobre a linguagem Python, acesse o site oficial: python.org

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo