Le chiffrement Playfair fut inventé en 1854 par le physicien britannique Charles Wheatstone, mais il doit son nom à Lord Lyon Playfair, ami de Wheatstone qui le popularisa et en défendit l'adoption auprès du gouvernement britannique. C'est l'un des premiers exemples de chiffrement digrammatique : il chiffre les lettres deux par deux (par paires, appelées bigrammes) plutôt qu'une par une.
Le gouvernement britannique fut convaincu par Playfair de l'utilité de ce chiffrement pour les communications militaires de terrain, car il était suffisamment simple pour être utilisé sans équipement électronique tout en étant bien plus résistant que le César ou Vigenère face à l'analyse de fréquences classique. Il fut utilisé pendant la Seconde Guerre des Boers (1899–1902) et lors de la Première Guerre mondiale.
Contrairement aux substitutions monoalphabétiques, Playfair chiffre des paires de lettres. Cela signifie qu'une analyse de fréquences classique sur les lettres individuelles ne fonctionne plus directement. Il faudrait analyser les bigrammes (paires), ce qui nécessite un texte beaucoup plus long pour obtenir des statistiques significatives. En anglais, les bigrammes les plus fréquents sont TH, HE, IN, ER, AN — en français : ES, EN, DE, LE, NT.
Néanmoins, Playfair reste cassable par un cryptanalyste expérimenté. Il présente des faiblesses structurelles : deux lettres dans la même ligne ou colonne donnent toujours des lettres dans la même ligne ou colonne, ce qui laisse des patterns exploitables.
On écrit d'abord le mot-clé (sans doublons, en fusionnant I et J) dans la grille 5×5, puis on complète avec les lettres restantes de l'alphabet dans l'ordre. Par exemple avec la clé ALKINDI :
On divise le texte en bigrammes (paires de 2 lettres). Si une paire contient deux lettres identiques, on insère un X entre elles. Si le texte a un nombre impair de lettres, on ajoute un X à la fin.
Pour chaque bigramme, on regarde la position des deux lettres dans la grille. Une seule règle s'applique, selon leur configuration :
En résumé : même ligne → droite, même colonne → bas, sinon → coins du rectangle. Pour déchiffrer, on inverse les deux premières (gauche, haut), la troisième reste identique.