|
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

Comentários
Comente só assim vamos crescer juntos!