G
Guest
Gast
Hi,
ich hab hier n eigentlich einfaches Problem, dass ich aber irgendwie nicht so richtig lösen kann. :cry:
Also zum einen habe ich eine Datei in der ein 32 Zeichen langer Hashwert als String steht. Diesen soll ich mit einem selbst ermittelten Hashwert abgleichen, der mir über die Klasse MessaageDigest als byte[] zurück gegeben wird.
Für einen Vergleich hatte ich jetzt mein byte[] genommen, diese in einem BigInteger abgelegt und mit Hilfe von BigInteger#toString(16) in einen String umgewandelt.
Danach kann ich die beiden Strings mit Hilfe von String#equals(Object) ohne Probleme vergleichen.
Leider hat die Sache einen Hacken. Und zwar genau dann, wenn der ermittelte Hashwert eine führende 0 hat. Diese verschwindet nämlich bei der Umwandlung über BigInteger (ist ja auch klar) zum String. Dadurch sind die Strings beim Vergleich dann natürlich nicht mehr gleich, obwohl die Hashwerte vielleicht sogar richtig wären.
Kann mir vielleicht einer von euch weiterhelfen und mir vielleicht sagen wie ich ein byte[] in einen String umwandeln kann ohne die führenden Nullen zu verlieren, oder vielleicht auch wie ich einen String in ein byte[] bringen kann das dem von mir ermittelten entspricht bzw. mit diesem vergleichen werden kann? :bahnhof:
Achja ermittelt wird der Hashwert nach MD5.
Ich könnte vor dem String-Vergleich ja grundsätzlich meinen ermittelten String prüfen und diesem, wenn er keine 32 Zeichen hat, noch führende 0en anhängen. Aber das wäre irgendwie nicht sauber finde ich.
Hoffe ihr könnt mir helfen.
Vielen Dank schon mal !!!!
Gruß
Stefan
ich hab hier n eigentlich einfaches Problem, dass ich aber irgendwie nicht so richtig lösen kann. :cry:
Also zum einen habe ich eine Datei in der ein 32 Zeichen langer Hashwert als String steht. Diesen soll ich mit einem selbst ermittelten Hashwert abgleichen, der mir über die Klasse MessaageDigest als byte[] zurück gegeben wird.
Für einen Vergleich hatte ich jetzt mein byte[] genommen, diese in einem BigInteger abgelegt und mit Hilfe von BigInteger#toString(16) in einen String umgewandelt.
Danach kann ich die beiden Strings mit Hilfe von String#equals(Object) ohne Probleme vergleichen.
Leider hat die Sache einen Hacken. Und zwar genau dann, wenn der ermittelte Hashwert eine führende 0 hat. Diese verschwindet nämlich bei der Umwandlung über BigInteger (ist ja auch klar) zum String. Dadurch sind die Strings beim Vergleich dann natürlich nicht mehr gleich, obwohl die Hashwerte vielleicht sogar richtig wären.
Kann mir vielleicht einer von euch weiterhelfen und mir vielleicht sagen wie ich ein byte[] in einen String umwandeln kann ohne die führenden Nullen zu verlieren, oder vielleicht auch wie ich einen String in ein byte[] bringen kann das dem von mir ermittelten entspricht bzw. mit diesem vergleichen werden kann? :bahnhof:
Achja ermittelt wird der Hashwert nach MD5.
Ich könnte vor dem String-Vergleich ja grundsätzlich meinen ermittelten String prüfen und diesem, wenn er keine 32 Zeichen hat, noch führende 0en anhängen. Aber das wäre irgendwie nicht sauber finde ich.
Hoffe ihr könnt mir helfen.
Vielen Dank schon mal !!!!
Gruß
Stefan