Java Base64: String sieht in Java 1.6 und Android völlig unterschiedlich aus.

Mike Lowrey

Commodore
Registriert
Juni 2005
Beiträge
4.978
Hallo zusammen,

ich sitze gerade an einem absurden Problem.

Ich habe einen String (Passwort) welcher mit SHA-512 gehashed wurde.

Dieser String soll per HTTP gesendet werden, daher codiere ich diesen mit Base64.

Dazu nutze ich diese Klasse http://iharder.sourceforge.net/current/java/base64/
Da die apache.common Implementierung Schwierigkeiten mit Android macht.

In einer normalen Desktop Anwendung (Kommandozeile) wird genau der erwartete String berechnet:


Code:
PzJTP2o/az8tSm8/PT8GPz8/QT8/FEo/P3YhPz8zP0g/Pz8/bT9GPz8XPz8QP14/Pz8UeX4/Pz8UVGQ/Pz8/Ew==
Bei Android kommt dagegen das hier raus:

Code:
77%2B9MlPvv71q77%2B9a%2B%2B/vS1Kb%2B%2B/vT3vv70G77%2B977%2B977%2B9Qe%2B/ve%2B/vRRK77%2B977%2B9diHvv73vv70z77%2B9SO%2B/ve%2B/ve%2B/ve%2B/vW3vv71G77%2B977%2B9F%2B%2B/ve%2B/vRDvv71e77%2B977%2B977%2B9FHl%2B77%2B977%2B977%2B9FFRk77%2B977%2B977%2B977%2B9Ew==
Kann man jemand nen Tipp geben, woran das scheitern könnte? Die Strings sehen schließlich komplett unterschiedlich aus...
 
Wozu Base 64? Hashes beinhalten nur [A-Za-z0-9], da gibts keinerlei Übertragungsprobleme.
 
Zugegebenermaßen nur weil es einfacher war Base64 auf Java Seite zu nutzen und mit einem Base64 String von C# zu vergleichen. Als das Encoding vernünftig aufzulösen. Denn der SHA-512 Hash von Java wird nur mit einer Menge Fragezeichen dargestellt.
 
Mike Lowrey schrieb:
Denn der SHA-512 Hash von Java wird nur mit einer Menge Fragezeichen dargestellt.
Probiere es mal damit.

Code:
        String valuesToHash = "bla";
        String sha512 = Hex.encodeHexString(DigestUtils.getSha512Digest().digest(valuesToHash.getBytes()));
        System.out.println(String.format("SHA512: %s", sha512));

Das sollte keine Fragezeichen ergeben sondern
Code:
6ba028366ebcdcef1ce3d73883c3475def4b7925f80e800bc82d91aa4430093622f9f95d20894022864dfa55d9c901ff520e070132eafabdae62a73e5ceeaed1
wie du z.B. hier vergleichen kannst.

Vielleicht löst das dein Problem schon.
 
Zurück
Oben