Foros del Web » Soporte técnico » Ayuda General »

como convierto 48digitos a 32 hexadecima ??

Estas en el tema de como convierto 48digitos a 32 hexadecima ?? en el foro de Ayuda General en Foros del Web. Estoy desencriptando un PINBLOCK eb 3DES , y el programa me pide 2 llaves , tengo una llave 32caract hexadecimal y otra 48digitos enteros . ...
  #1 (permalink)  
Antiguo 23/12/2009, 23:13
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
como convierto 48digitos a 32 hexadecima ??

Estoy desencriptando un PINBLOCK eb 3DES , y el programa me pide 2 llaves , tengo una llave 32caract hexadecimal y otra 48digitos enteros .

Mi pregunta es como puedo convertir estos 48digitos a 32hexadecimal ????
  #2 (permalink)  
Antiguo 27/12/2009, 20:33
Avatar de Vanchi
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: Io voy donde vo' vai... Ca'eza
Mensajes: 1.111
Antigüedad: 17 años, 3 meses
Puntos: 138
Respuesta: como convierto 48digitos a 32 hexadecima ??

Cita:
Iniciado por mind_2009 Ver Mensaje
Estoy desencriptando un PINBLOCK eb 3DES , y el programa me pide 2 llaves , tengo una llave 32caract hexadecimal y otra 48digitos enteros .

Mi pregunta es como puedo convertir estos 48digitos a 32hexadecimal ????
mmm... yo mucho de conversión de números no manejo, pero veamos que queda aun en mi memoria...

Para pasar un número dec a hex tenés que dividirlo sucesivamente por 16 e ir guardando el resto. Luego el número serán los restos ordenados desde el último que obtuviste hasta el primero.


Por ejemplo para pasar de 1531 dec a hex
1531 / 16 = 95 (resto: 11 -> B)
95 / 16 = 5 (resto: 15 -> F)
5/16 = 0 (resto: 5)
De modo que el número sería:
5FB [hex]

que sería lo mismo a:
5 x 16^2 + 15 x 16^1 + 11

Viendo esto notamos que la cantidad de dígitos surge de la cantidad de divisiones por 16 que se le realizan al número decimal.

Para hacerlo numericamente tenemos:
D[h] = Ceiling(log(N[d]) / log(16))
Donde:
D[h] = Cantidad de dígitos del número hexadecimal.
N[d] = Número decimal.
Ceiling = Redondeo al número entero mayor

En nuestro caso:
D[h] = Ceiling(log(1531) / log(16))
D[h] = Ceiling(2.64...)
D[h] = 3

Para el caso que vos planteás al ser un número decimal de 48 dígitos el logaritmo de ese número estará en un entorno [47, 48). Tomemos el caso más favorable que sería 47
log(N[d]) = 47
D[h] = Ceiling(47 / log(16))
D[h] = Ceiling(39.03...)
D[h] = 40

Esto significa que para transformar un número decimal de 48 dígitos (suponiendo que los dígitos a la izquierda son no nulos. Es decir que 00062 son 2 dígitos y no 5) a hexadecimal necesitarías por lo menos 40 dígitos hexadecimales.

Si tu caso SI se consideran los 0 delante del número entonces la forma de pasar de un valor dec a un hex está planteada... De todos modos si buscás en inet SEGURO que vas a encontrar funciones ya hechas para casi cualquier lenguaje de programación.

Saludos.

PD: Por las dudas chequeá lo que escribí y NO lo tomes como palabra santa, ya que mis conocimientos de pasajes numéricos están bastante oxidados.
__________________
Según recientes estudios científicos, los 3 más grandes descubrimientos de la humanidad son: El fuego, la rueda y la minifalda.
Yo personalmente no le encuentro mucha utilidad a los 2 primeros.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:29.