17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

352<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

Points abordés<br />

Tableaux alphabétiques, list comprehension, string.maketrans,<br />

string.translate, input() et raw_input(), opérateurs % et in, manipulation de<br />

l’objet list.<br />

Solution<br />

Chiffrement de César<br />

#!/usr/bin/python<br />

# -*- coding: utf8 -*from<br />

string import ascii_lowercase as letters<br />

from string import ascii_uppercase<br />

from string import maketrans<br />

# préparation du tableau de traduction<br />

def _rot13(car):<br />

new_pos = (letters.find(car) + 13) % len(letters)<br />

return letters[new_pos]<br />

CAESAR = ''.join([_rot13(car) for car in letters])<br />

# gestion des minuscules et majuscules<br />

CAESAR = CAESAR + CAESAR.upper()<br />

letters = letters + ascii_uppercase<br />

# génération d'un tableau de traduction<br />

TRANS = maketrans(letters, CAESAR)<br />

if __name__ == '__main__':<br />

text = raw_input('Saisissez une phrase: ')<br />

print(text.translate(TRANS))<br />

Discussion<br />

Le décalage est basé sur l’utilisation de la fonction translate de l’objet de type str.<br />

Cette fonction prend en paramètre un tableau de traduction de longueur 256 qui<br />

correspond aux nouvelles valeurs à utiliser pour chacun des caractères de la table<br />

ASCII. Python utilise ici des fonctions rapides écrites en C.<br />

La fonction maketrans permet de générer automatiquement ce tableau lorsque le<br />

développeur travaille avec un sous-ensemble de la table ASCII. Il prend en paramètres<br />

deux séquences et renvoie le tableau correspondant. L’intérêt de ces fonctions est<br />

qu’elles sont très rapides.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!