Prérequis :
- Maîtriser les bases de la programmation Python (variables, boucles, entrées/sorties, fonctions)
- Avoir déjà abordé les notions de liste et de dictionnaire
Contexte de la mise en œuvre de l'activité : en classe
Ressources, matériel, documents nécessaires : bibliothèque Python : PIL
Présentation
Bob souhaite envoyer un message secret à Alice. Il décide de cacher son message dans une image selon le principe de la stéganographie. Voici comment il s'y prend :
- Il chiffre d’abord le message à l’aide d’un code (base 64) sur 6 bits
- Il remplace les deux bits de poids faible de chaque composante du pixel (RVB) de l'image par les six bits du codage précédent : pour RVB (29, 24,0) avec la lettre « b » ("011011") cela donne (29, 26,3), ce qui ne change pas énormément la couleur du pixel.
Pour voir le message, Alice devra effectuer l'opération inverse depuis l'image codée. Elle devra récupérer les deux bits de poids faible de chaque composante RVB de chaque pixel de l'image codée, les regrouper par six pour déchiffrer chaque caractère. (29, 26,3) donne en binaire (11101, 11010,11) et en ne gardant que les deux bits de poids faible, ("011011") ce qui donne la lettre « b ».
Alice et Bob s'accordent sur le fait que le message se termine par un point.