2012-01-02 13 views
8

Estoy usando un md5 para asegurar mis publicaciones a un backendserver que ejecuta PHP. Los parámetros se envían a través de una publicación HTTP.md5 con Android y PHP

Tengo un problema, el resultado de mi cálculo md5 es diferente en Android y en el servidor PHP si hay un ü, ä o ö en uno de los parámetros de entrada.

En Android, el hash se calcula a través de esta función:

public static final String md5(final String s) { 
    try { 
     // Create MD5 Hash 
     MessageDigest digest = java.security.MessageDigest 
       .getInstance("MD5"); 
     digest.update(s.getBytes()); 
     byte messageDigest[] = digest.digest(); 

     // Create Hex String 
     StringBuffer hexString = new StringBuffer(); 
     for (int i = 0; i < messageDigest.length; i++) { 
      String h = Integer.toHexString(0xFF & messageDigest[i]); 
      while (h.length() < 2) 
       h = "0" + h; 
      hexString.append(h); 
     } 
     return hexString.toString(); 

    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
    return ""; 
} 

en el servidor PHP simplemente utilizo

md5() function. 
+1

Suena como un problema de codificación (ISO-8859-1 vs. UTF-8 por ejemplo). ¿Qué juegos de caracteres estás usando? ¿Puedes mostrar un código? –

+0

seguro, editaré mi publicación. – tobias

+1

por cierto, es posible que desee usar SHA1 u otro algoritmo para proteger sus publicaciones ... MD% ya no es seguro –

Respuesta

7

Parece que usted necesita para pasar UTF-8 cadena codificada a md5 en PHP:

md5(utf8_encode($string)); 
+0

Thx, esto faltaba. – tobias

1

Podría ser que está utilizando juego de caracteres por defecto de la plataforma.

su lugar, tratar:

digest.update(s.getBytes("UTF-8"); 
+0

He reemplazado my digest.update() con el tuyo, pero todavía tengo el mismo problema. Tal vez tengo que configurar UTF-8 en PHP? – tobias