Pasar un texto a MD5 o a hexadecimal

Iniciado por blozzter, Julio 10, 2011, 02:38:23 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 10, 2011, 02:38:23 PM Ultima modificación: Julio 24, 2014, 02:23:41 PM por Expermicid
últimamente he estado utilizando mucho la conversión a código hexadecimal, así que escribí un programa que facilitara la tarea para no tener que estar ingresando a webs que hacen el trabajo. y para hacerlo más atractivo le incluí además la encriptación en md5.

estoy recién empezando en esto, así que criticas y sugerencias me vendrían bien.

ah, me olvidaba, estoy con el interprete de python 2.7 y 2.3. con estos me funciona, con versiones superiores creo que da problemas.


Código: python
# convertir un texto a MD5
# o a hexadecimal
# uso:
# python text-tool.py  -type  md5/hex  -text  texto-a-convertir
# > blozzter

import sys, md5

def convert_md5(text):
    encriptado = md5.new()
    encriptado.update(text)
    return encriptado.hexdigest()

def convert_hex(texto):
long = len(texto)
temp = ''

for i in range(long):
  temp += hex(ord(texto[i])) #convertimos a ascii y luego a hexadecimal

hexadecimal = ''

for i in range(len(temp) - 1): #limpiamos la cadena quitandole los '0x'
  if temp[i] == '0' and temp[i + 1] == 'x':
hexadecimal += temp[i + 2]
hexadecimal += temp[i + 3]
return hexadecimal


if (len(sys.argv) - 1) != 4:  #me aseguro que hayan sido 4 los argumentos entregados
print '> Error en la cantidad de parametros'
sys.exit()


for arg in range(len(sys.argv) - 1):
try:
if sys.argv[arg + 1] == '-type':
tipo = sys.argv[arg + 2]

if sys.argv[arg + 1] == '-text':
texto = sys.argv[arg + 2]

except:
print '> Error en los parametros\n'
print 'python text-tool.py  -type  md5/hex  -text  texto-a-convertir\n'
sys.exit()

try:
if tipo == 'md5':
en_md5 = convert_md5(texto)
print '> ', en_md5

if tipo == 'hex':
en_hex = convert_hex(texto)
print '> ', en_hex

except:
print '> Error en los parametros\n'
print 'python text-tool.py  -type  md5/hex  -text  texto-a-convertir\n'




demostraciones:

Código: php
C:\herramientas>python text-tool.py -type hex -text undercode
>  756e646572636f6465



Código: php
C:\herramientas>python text-tool.py -type md5 -text undercode
>  c7b5dc22ebc8e1d8f069ee1f2d340d57

¡< blozzter >!

Con versiones 3x dará problemas, ya que la sintaxis es incorrecta.

El código podemos decir que está bien, solo te falta respetar el ordenamiento de Python (abajo hacia arriba) y aprender a dejar el código limpio, ya que es una de las características más importantes del lenguaje.

Te reto a que sigas practicando, y espero ver mejoras de este código.

Saludos!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Con versiones 3x dará problemas, ya que la sintaxis es incorrecta.

El código podemos decir que está bien, solo te falta respetar el ordenamiento de Python (abajo hacia arriba) y aprender a dejar el código limpio, ya que es una de las características más importantes del lenguaje.

Te reto a que sigas practicando, y espero ver mejoras de este código.

Saludos!

Disculpa, pero no comprendo que es lo que quieres decir con lo del 'ordenamiento' ni tampoco que parte(s) del código te parecen sucios.


saludos.
¡< blozzter >!

CREO que con int("a",16) Puedes hacer lo mismo para pasar a HEX(base16)
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
CREO que con int("a",16) Puedes hacer lo mismo para pasar a HEX(base16)

JaAViEr, creo que en C es posible hacer algo como lo que dices tú.

si lo hago en python me sale esto:

Código: php
>>> int("a", 16)
10


lo cual está mal, porque a la 'a' en hexadecimal le corresponde el valor 61 y no 10. lo cual me lleva a pensar que se puede hacer algo como esto:

Código: php
>>> int('a', 16) + 51
61

>>> int('e', 16) + 51
65


pero ese método funciona solo hasta la letra 'f', con la 'g' ya da error  ::)


saludos =)

¡< blozzter >!