2017/05/25 23:09 1/4 Steganographie LSB avec Python et C
Informatique, Programmation, Python, Enseignement... - https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/
Steganographie LSB avec Python et C
Les explications générales sur la stéganographie LSB sont disponibles ici : Stéganographie LSB
Dans ce TP, nous allons non seulement aborder la méthode de stéganographie LSB, mais aussi voir de
quelle façon il est possible de réaliser un programme à la fois avec Python et C, en tirant partie des
avantages des deux langages :
Python permet de développer très rapidement, limite les bugs, mais est lent.
C est très rapide à l'exécution, mais plus délicat à utiliser, et le développement est souvent plus
long.
Nous allons donc réaliser un programme Python qui peut charger et afficher une image (nous
utiliserons une bibliothèque pour cela). Puis, depuis le programme Python, nous appellerons une
fonction C qui transforme une image en utilisant la méthode LSB. Le langage C sera donc réservé au
calculs des pixels de l'image, qui est typiquement le genre de calculs pour lesquels Python est lent.
Il n'est pas rare que lors de la réalisation d'une application, une phase de prototypage soit
nécessaire : on teste différents algorithmes, les fonctionnalités essentielles etc….. Cette phase de
développement doit être rapide et il doit être facile de tester plusieurs algorithmes. Pour cette phase
Python est un langage idéal.
Puis lors de la phase de développement du produit, il faudra optimiser le code de manière à le rendre
efficace. Parfois le langage utilisé lors de cette phase n'est pas le même que celui utilisé lors de la
phase de prototypage. La gros avantage de Python et C et qu'une fois le prototype réalisé, nous
pouvons nous contenter de réécrire en C les parties les plus sensibles uniquement, et parvenir ainsi
plus rapidement au produit fini.
C'est exactement ce que nous allons faire ici :
réalisation d'un prototype en Python1.
optimisation du coeur du code par sa réécriture en C2.
Réalisation du prototype Python
Nous utiliserons la bibliothèque ImageWindow (développée à l'école) ou bien PySide (pour les
interfaces graphiques). La documentation de ImageWindow est ici : Travailler avec des images en
Python
Nous travaillerons avec des petites images (à cause du temps de calcul rédhibitoire en Python) :