Hill Cipher — Chiffre par algèbre linéaire

Classique CTF

Principe

Le chiffre de Hill chiffre des blocs de N lettres en les multipliant par une matrice clé N×N modulo 26. Le déchiffrement nécessite l'inverse de la matrice mod 26 (la matrice doit être inversible).

Mécanisme

Clé : matrice K (ex 2x2), clair en vecteurs de 2 lettres
C = (K · P) mod 26
Déchiffrement : P = (K⁻¹ · C) mod 26

# K inversible mod 26 => det(K) premier avec 26
import numpy as np  # + inverse modulaire du déterminant

Cryptanalyse

Vulnérable à l'attaque à clair connu : avec assez de couples clair/chiffré on résout le système linéaire pour retrouver K. Sinon, brute force des matrices inversibles (limité pour 2×2).