user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 05-10-2014 22:04:19

IceF0x
#! Gourou Linux

PyPolybe le carré de Polybe

Voici un code affreux, que je doit optimiser car il est super moche mais en attendant il marche qui encode et décode une phrase avec le carré de polybe.
J'ai codé ce tool car ceux trouvé via une recherche sur google ne prenait en compte que des carré de 5x6 au lieu du traditionnel 5x5.

Merci aux personnes qui m'ont aidé a réaliser ce code.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

def main():
  header()

  print("\033[1;31m [>]\033[1;m 1. Encrypt Polybe.")
  print("\033[1;31m [>]\033[1;m 2. Decrypt Polybe.")
  print("\033[1;31m [>]\033[1;m 3. Exit.")
 	
  choice_var=raw_input("\033[1;31m [>]\033[1;m Enter your choice: ")
	
  if(choice_var=="1"):
    __EnCryptPolybe__()
		 
  if(choice_var=="2"):
    __DeCryptPolybe__()

  if(choice_var=="3"):
    quit()

def header():
  print ''' ____        ____       _       _          
|  _ \ _   _|  _ \ ___ | |_   _| |__   ___ 
| |_) | | | | |_) / _ \| | | | | '_ \\ / _ \\
|  __/| |_| |  __/ (_) | | |_| | |_) |  __/
|_|    \__, |_|   \___/|_|\__, |_.__/ \___|
       |___/              |___/ '''



def __EnCryptPolybe__():
  chaine = raw_input("phrase : ")
  chaine = chaine.lower()
  chaine = chaine.replace('a', '11')
  chaine = chaine.replace('b', '12')
  chaine = chaine.replace('c', '13')
  chaine = chaine.replace('d', '14')
  chaine = chaine.replace('e', '15')
  chaine = chaine.replace('f', '21')
  chaine = chaine.replace('g', '22')
  chaine = chaine.replace('h', '23')
  chaine = chaine.replace('i', '24')
  chaine = chaine.replace('j', '24')
  chaine = chaine.replace('k', '25')
  chaine = chaine.replace('l', '31')
  chaine = chaine.replace('m', '32')
  chaine = chaine.replace('n', '33')
  chaine = chaine.replace('o', '34')
  chaine = chaine.replace('p', '35')
  chaine = chaine.replace('q', '41')
  chaine = chaine.replace('r', '42')
  chaine = chaine.replace('s', '43')
  chaine = chaine.replace('t', '44')
  chaine = chaine.replace('u', '45')
  chaine = chaine.replace('v', '51')
  chaine = chaine.replace('w', '52')
  chaine = chaine.replace('x', '53')
  chaine = chaine.replace('y', '54')
  chaine = chaine.replace('z', '55')

  print chaine
  main()

def __DeCryptPolybe__():
  chaine = raw_input("phrase : ")
  chaine = chaine.replace(" ", "xx")
  chaine1 = chaine[:2], chaine[2:4], chaine[4:6], chaine[6:8], chaine[8:10], chaine[10:12], chaine[12:14], chaine[14:16], chaine[16:18], chaine[18:20], chaine[20:22], chaine[22:24], chaine[24:26]\
, chaine[26:28], chaine[28:30], chaine[30:32], chaine[32:34], chaine[34:36], chaine[36:38], chaine[38:40], chaine[40:42], chaine[42:44], chaine[44:46], chaine[46:48], chaine[48:50], chaine[50:52]
  chaine2 = " ".join(str(i) for i in chaine1[0:len(chaine1)])

  chaine2 = chaine2.replace('xx', ' ')
  chaine2 = chaine2.replace('11', 'a')
  chaine2 = chaine2.replace('12', 'b')
  chaine2 = chaine2.replace('13', 'c')
  chaine2 = chaine2.replace('14', 'd')
  chaine2 = chaine2.replace('15', 'e')
  chaine2 = chaine2.replace('21', 'f')
  chaine2 = chaine2.replace('22', 'g')
  chaine2 = chaine2.replace('23', 'h')
  chaine2 = chaine2.replace('24', 'i')
  chaine2 = chaine2.replace('24', 'j')
  chaine2 = chaine2.replace('25', 'k')
  chaine2 = chaine2.replace('31', 'l')
  chaine2 = chaine2.replace('32', 'm')
  chaine2 = chaine2.replace('33', 'n')
  chaine2 = chaine2.replace('34', 'o')
  chaine2 = chaine2.replace('35', 'p')
  chaine2 = chaine2.replace('41', 'q')
  chaine2 = chaine2.replace('42', 'r')
  chaine2 = chaine2.replace('43', 's')
  chaine2 = chaine2.replace('44', 't')
  chaine2 = chaine2.replace('45', 'u')
  chaine2 = chaine2.replace('51', 'v')
  chaine2 = chaine2.replace('52', 'w') 
  chaine2 = chaine2.replace('53', 'x')
  chaine2 = chaine2.replace('54', 'y')
  chaine2 = chaine2.replace('55', 'z')

  print chaine2
  main()

if __name__=="__main__":
  main()

Résultat:

polybe-3009bdb.png

Documentation:
http://fr.wikipedia.org/wiki/Carré_de_Polybe


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

Pied de page des forums