Codificación/decodificación de texto co algoritmo rot-13
Published by Xosé Otero abril 11th, 2007 in Exemplos, PythonO algoritmo rot-13 é un algoritmo para codificar e decodificar texto. O algoritmo rot-13 fundaméntase en que no código ASCII os 26 caracteres entre o "A" e o "Z", así como entre o "a" e o "z", son consecutivos. Por tanto, se se moven 13 posición a estes caracteres (a metade dos 26 caracteres do inglés), conséguese outro caracteres que se pode recuperar movendo outros 13 espazos. Este algoritmo é moi sinxelo e por tanto non serve máis que para exemplo, pero en ningún caso para un uso serio.
O código desta anotación é un módulo chamado rot13 que implementa unha función chamada encrypt que codifica/decodifica unha cadea de caracteres. Internamente encrypt chama a un módulo privado chamado _rot13 que é o que fai a codificación dun caracterer. O código tamén se pode executar coma un script por si mesmo e neste caso codificará/decodificará o que se lle pase ó script coma parámetros.
Para aplicar este algoritmo hai que ter claro que non se pode codificar tódolos caracteres posibles con rot-13, só 26 (ou 52 se diferenciamos entre maiúsculas e minúsculas). Así, o primeiro que se fai na función _rot13 é verificar se o caracter se pode codificar/decodificar e devolve-lo intacto se non se pode.
Código
#! /usr/bin/env python # -*- coding: iso-8859-15 -*- """Módulo que codifica e decodifica un texto co algoritmo rot13. Este algoritmo non é seguro e só se debe empregar coma exemplo.""" __all__ = ["encrypt"] __ord_A = ord("A") __num_chars = ord("Z") - ord("A") + 1 def _rot13(character): """Devolve un caracter codificado co algoriitmo rot-13.""" index = ord(character.upper()) - __ord_A if not character.isalpha() or index > 127: return character new_character = chr((index + 13) % __num_chars + __ord_A) if character.islower(): new_character = new_character.lower() return new_character def encrypt(text): """Devolve un texto codificado co algoritmo rot-13.""" encrypted_text = [] for character in text: encrypted_text.append(_rot13(character)) return "".join(encrypted_text) if __name__ == "__main__": # Execución do algoritmo ós parámetros do script import sys print encrypt(" ".join(sys.argv[1:]))
chuzame -
0 Responses to “Codificación/decodificación de texto co algoritmo rot-13”
Please Wait
Leave a Reply