Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Pasar una función de java a php

Estas en el tema de Pasar una función de java a php en el foro de PHP en Foros del Web. Amigos tengo un terrible problema: Tengo un password que tengo que guardarla de la siguiente manera Pass originar: 123456789 Pass MD5: 25f9e794323b453885f5181f1b624d0b Todo bien hasta ...
  #1 (permalink)  
Antiguo 02/04/2015, 09:16
Avatar de tquezada  
Fecha de Ingreso: febrero-2013
Ubicación: Santiago
Mensajes: 196
Antigüedad: 11 años, 2 meses
Puntos: 8
Pasar una función de java a php

Amigos tengo un terrible problema:
Tengo un password que tengo que guardarla de la siguiente manera

Pass originar: 123456789

Pass MD5: 25f9e794323b453885f5181f1b624d0b
Todo bien hasta acá
Tomar PassMD5 pero tratarlo como hexadecimal
Pass Hexadecimal: 25 f9 e7 94 32 3b 45 38 85 f5 18 1f 1b 62 4d 0b
Tomar Pass Hexadecimal transformar a binario
Pass Binario: 37 -7 -25 -108 50 59 69 56 -123 -11 24 31 27 98 77 11
Tomar Pass Binario y tranformar a EncodeBase64
Pass EncodeBase64: JfnnlDI7RTiF9RgfG2JNCw==
Pass EncodeBase64 agregar prefijo {MD5}
Pass que genera java: {MD5}JfnnlDI7RTiF9RgfG2JNCw==

Entonces así debería guardar en la base de datos {MD5}JfnnlDI7RTiF9RgfG2JNCw==
Ejemplo en JAVA, para traspasarlo a PHP.

Código Java:
Ver original
  1. //Pass "123456789" en MD5
  2.                     String pass = "25f9e794323b453885f5181f1b624d0b";
  3.                     //Transformar a Binario
  4.                     byte[] bts = new byte[p.length() / 2];
  5.                     for (int i = 0; i < bts.length; i++) {
  6.                         bts[i] = (byte) Integer.parseInt(p.substring(2*i, 2*i+2), 16);
  7.                     }
  8.                     //Transformar Binario a EncodeBase64 utilizando org.apache.commons.codec.binary.Base64;
  9.                     byte[] encodedBytes = Base64.encodeBase64(bts);
  10.                     System.out.println("{MD5}" + new String(encodedBytes));

Ojala alguien sepa como pasarlo de java a php, por que no he podido

Gracias.
__________________
¿Sabes cuántos programadores hacen falta para cambiar una bombilla? - no, no ¿Cuántos? - Ninguno... es un problema de hardware.
  #2 (permalink)  
Antiguo 02/04/2015, 11:52
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Pasar una función de java a php

Código PHP:
Ver original
  1. <?php
  2.     $pass = "123456789";
  3.    
  4.     echo '{MD5}'.base64_encode(implode("", array_map("hex2bin", str_split(md5($pass), 2))));
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 02/04/2015, 12:14
Avatar de tquezada  
Fecha de Ingreso: febrero-2013
Ubicación: Santiago
Mensajes: 196
Antigüedad: 11 años, 2 meses
Puntos: 8
Respuesta: Pasar una función de java a php

Gracias por tu respuesta maestro pero me da el siguiente error

Warning: array_map() [function.array-map]: The first argument, 'hex2bin', should be either NULL or a valid callback in E:\ServerPHP\intranet\AppWebIntranet\Mantenedor_pr oveedores\index.php on line 8

Warning: implode() [function.implode]: Invalid arguments passed in E:\ServerPHP\intranet\AppWebIntranet\Mantenedor_pr oveedores\index.php on line 8
{MD5}


Gracias por responder
__________________
¿Sabes cuántos programadores hacen falta para cambiar una bombilla? - no, no ¿Cuántos? - Ninguno... es un problema de hardware.
  #4 (permalink)  
Antiguo 02/04/2015, 19:01
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Pasar una función de java a php

Hola tquezada

Revisa que tengas la versión del PHP 5.4.0 o superior
  #5 (permalink)  
Antiguo 03/04/2015, 20:16
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Pasar una función de java a php

En efecto, necesitas php 5.4 o superior.

Si tienes 5.3 o superior puedes usar funciones lambda:
Código PHP:
Ver original
  1. <?php
  2.     $pass = "123456789";
  3.     $hex2bin = function($h) { return hex2bin($h); };
  4.  
  5.     echo '{MD5}'.base64_encode(implode("", array_map($hex2bin, str_split(md5($pass), 2))));
o la versión in-line:
Código PHP:
Ver original
  1. <?php
  2.     $pass = "123456789";
  3.  
  4.     echo '{MD5}'.base64_encode(implode("", array_map(function($h) { return hex2bin($h); }, str_split(md5($pass), 2))));

Para versiones anteriores de PHP es necesario definir la funcion de mapeo dentro del espacio de usuario:
Código PHP:
Ver original
  1. <?php  
  2.     function hex2bin2 ($h) { return hex2bin($h); }
  3.     $pass = "123456789";
  4.  
  5.     echo '{MD5}'.base64_encode(implode("" , array_map("hex2bin2", str_split(md5($pass), 2))));
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #6 (permalink)  
Antiguo 06/04/2015, 06:25
Avatar de tquezada  
Fecha de Ingreso: febrero-2013
Ubicación: Santiago
Mensajes: 196
Antigüedad: 11 años, 2 meses
Puntos: 8
Respuesta: Pasar una función de java a php

Gracias por responder!!

Revisare las soluciones y aviso que tal. Saludos
__________________
¿Sabes cuántos programadores hacen falta para cambiar una bombilla? - no, no ¿Cuántos? - Ninguno... es un problema de hardware.
  #7 (permalink)  
Antiguo 06/04/2015, 09:36
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Pasar una función de java a php

tquezada te sugiero que como mínimo utilices php 5.5 con miras a migrar a 5.6 ya que este año se acaba el soporte para php 5.4 y un año después el de 5.5.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 08/04/2015, 07:36
Avatar de tquezada  
Fecha de Ingreso: febrero-2013
Ubicación: Santiago
Mensajes: 196
Antigüedad: 11 años, 2 meses
Puntos: 8
Respuesta: Pasar una función de java a php

Cita:
Iniciado por hhs Ver Mensaje
tquezada te sugiero que como mínimo utilices php 5.5 con miras a migrar a 5.6 ya que este año se acaba el soporte para php 5.4 y un año después el de 5.5.
Si gracias por el aporte ya migre y la solución resulto de maravillas. Gracias a los que aportaron.
__________________
¿Sabes cuántos programadores hacen falta para cambiar una bombilla? - no, no ¿Cuántos? - Ninguno... es un problema de hardware.

Etiquetas: java
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 04:54.