Décembre 2015 Cryptographie visuelle
3 Solution du problème
Si vous avez bien compris, pour décrypter la photo envoyée par votre frère, vous avez besoin . . . . . .
...............................................................................................
Bien sûr il a pris soin de vous le faire parvenir dans un deuxième mail indépendant.
Vu la taille des images, il n’est plus question de faire le décryptage à la main, mais un ordinateur va
nous être d’un grand secours.
Quelques informations nécessaires à la programmation :
•On a besoin d’une bibliothèque, nommé PIL (= Pyhton Image Library), pour manipuler les
images. Attention elle n’est disponible que dans les versions 2.x de python... son portage vers
les versions 3.x s’appelle Pillow. Les commandes sont les mêmes !
•La commande img = Image.open("nomfich") : charge l’image contenue dans le fichier nomfich
et la stocke dans la variable img.
•Si img est une variable contenant une image (chargée par la technique précédente), alors la
commande a = img.getpixel((x,y)) récupère la valeur du pixel de coordonnées (x,y) et la
stocke dans la variable a.
•Si img est une variable contenant une image la commande img.putpixel((x,y),c) remplace la
valeur du pixel de coordonnées (x,y) par la valeur contenue dans la variable c.
Q 1 Saisir sur ordinateur puis compléter le programme python (2.x) ci-après afin de découvrir la
fameuse photo tant convoitée :
1" " " Ce programme cha rge une image cod ee par l a methode du masque XOR
2et a f f i c h e l ’ image decodee " " "
3
4from PIL import Image # l a b i b l i o t h e q u e PIL permet de char g e r / sau ver
des images
5
6print ( " Decodage d ’ une image par l a methode du XOR" )
7
8XMAX, YMAX = # Retro uver l a t a i l l e des images . . . . . . . . . . . . .
9
10 codee = Image . open( " image_codee . pgm" ) # o u v e r t u r e de l ’ image c odee
11 masque = Image . open( " image_masque . pgm" ) # o u v e r t u r e du masque
12 de codee = Image . new ( "L " , (XMAX,YMAX) ) # d e c l a r a t i o n de l a f u t u re
image decodee ( "L" pour N&B sur 8 b i t s )
13
14 # Decodage :
15 # . . . . . . . . . . . e n t r e r v o t re code . . . . . . . . .
16
17 deco de e . sa ve ( " image_decodee . pgm" ) # Sauve l ’ image decodee
18 decod ee . show ( ) # A f f i c h e a l ’ e cr an l ’ image de codee
Q 2 Essayer de voir ce qui se passe si l’on applique l’opération « OU » au lieu de « XOR »...
Q 3 Envisager une méthode pratique (sans ordinateur) pour décrypter a peu près l’image, sans ordi-
nateur simplement à l’aide de l’image cryptée et du masque...
Page 4/4