kostenloser Webspace werbefrei: lima-city


MD5 HexString kürzer als 32 Zeichen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    reimenseimen

    reimenseimen hat kostenlosen Webspace.

    Hallo, ich nutze folgende Funktion um einen md5 hash in Android zu berechnen und ihn in einen HexString zu konvertieren. Dabei werden die Hex Strings bei bisher getesten Passwörtern 30-31 Zeichen lang. Sollten die Strings nicht immer 32 Zeichen haben?

    public static String encryptPassword(String password){
    		byte[] thedigest= null;
    		try {
    			byte[] bytesOfMessage = password.getBytes("UTF-8");
    			MessageDigest md = MessageDigest.getInstance("MD5");
    		    thedigest = md.digest(bytesOfMessage);
    		} catch (UnsupportedEncodingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (NoSuchAlgorithmException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		StringBuffer hexString = new StringBuffer();
            for (int i=0; i<thedigest.length; i++)
                hexString.append(Integer.toHexString(0xFF & thedigest[i]));
            return hexString.toString();
    	}
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du benutzt die Funktion
    Integer.toHexString()
    , doch die gibt keine führenden Nullen aus. Wenn bei ein paar Bytes eine führende Null entstehen, fehlen am Ende Zeichen in deinem Hex-String.

    Du könntest so etwas machen:
    hexString.append(String.format("%02X", thedigest[i] & 0xFF));
  4. Autor dieses Themas

    reimenseimen

    reimenseimen hat kostenlosen Webspace.

    hackyourlife schrieb:
    Du benutzt die Funktion
    Integer.toHexString()
    , doch die gibt keine führenden Nullen aus. Wenn bei ein paar Bytes eine führende Null entstehen, fehlen am Ende Zeichen in deinem Hex-String.


    Okay, vermutet habe ich sowas in der Richtung. Nachteil meiner Methode wäre also, dass 0BA1 und BA01 zum gleichen Hexstring führen würden und somit die Wahrscheinlichkeit steigt, dass mit einem anderen Passwort der gleiche Hexstring entsteht.

    hackyourlife schrieb:
    Du könntest so etwas machen:
    hexString.append(String.format("%02X", thedigest[i] & 0xFF));


    Vielen Dank, werde ich gleich testen, aber klingt logisch.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!