![]() |
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