2012-03-28 4 views
0

Ich + Zeichen aufaddieren 2 MD5-Hashes wie so:PHP Addieren MD5-Hashes?

md5('string1') + md5('string2') 

jetzt, wenn ich diese mit Streichern tat, etwa so:

'string1' + 'string2' 

... PHPP würde mir 0 als Rückgabewert geben. Bei MD5-Hashes gibt es jedoch immer einen numerischen Wert zurück, für den ich keinen Ursprung bestimmen kann.

Antwort

5

Es hängt von den Hashwerten ab, die von Ihren Zeichenfolgen generiert werden. Wenn „string“ Werte hinzufügen, die PHP-Verhalten (und es ist well documented) ist keine führenden numerischen Zeichen zu nehmen und sie als eine ganze Zahl zu behandeln ... wenn es keine führenden Numerik ist, dann wird es als 0

behandelt werden so

"1st String" + "2nd String" => 1 + 2 => 3 

mit Ihren Daten

md5('string1') = '34b577be20fbc15477aadb9a08101ff9' 
md5('string2') = '91c0c59c8f6fc9aa2dc99a89f2fd0ab5' 

geben

34 + 91 => 125 

Nun, warum versuchen Sie, Hash-Werte hinzuzufügen?

-1

In PHP+ ist numerische Addition und . ist String-Verkettung. Auch

, md5(string) kehrt String ...

Also:

$hashes = md5('string1') . md5('string2'); 

EDIT: Nicht gefunden, warum diese buuut würde downvote, möchten Sie wahrscheinlich zu numerisch Hashes hinzufügen. Dann müssen Sie md5 Ergebnis Nummer mit hexdec()

+0

Nicht mein Downvote, aber 'hexdec' wird hier offensichtlich nicht funktionieren, weil MD5s 128 Bits sind, was bedeutet, dass es in einen Float umgewandelt würde, was bedeutet, dass Sie die Präzision verlieren würden, was bedeutet, dass das Ergebnis nicht wäre genau. – Jon

+0

Wenn ich die Frage des OP richtig interpretiere, fragt er nicht, wie man zwei MD5-Hashes verkettet. Er fragt, warum der Operator '+' eine Ganzzahl ungleich Null zurückgibt, wenn sie normalerweise Null zurückgibt, wenn sie mit Strings verwendet wird. – JJJ

0

Sie nicht md5 mit + Hashes hinzufügen können, konvertieren genauso wie keine andere Art von Strings mit + hinzufügen kann. Der Unterschied wird erwartet und aufgrund von PHP rules for string to number conversion. Vergleichen Sie dies:

'1string' + '2string' 

mit

'string1' + 'string2' 

Wenn numerisch Hinzufügen md5s Sie gibt ein Ergebnis von Null verschieden, ist es, weil zufällig die spezifischen Hashes Sie hinzufügen Start mit einem oder mehreren Dezimalstellen .

Es kann keinen berechtigten Grund geben, zwei Strings hinzuzufügen, die keine Dezimalzahlen darstellen, also tun Sie es nicht.

1

Nur hinzufügen, MD5-Funktion gibt Zeichenfolge Wert zurück, aber MD5-Algorithmus generiert Hexadecomal-Werte.

Denken Sie auch daran, PHP unterstützt einige automatisierte Casting.

Aus diesem Grund gibt PHP einige Werte, aber Sie können diesen Wert nicht erkennen, da sogar eine einzelne Zeichenänderung in String den generierten MD5-Hash vollständig ändert.

Noch ist die Frage sehr interessant. Können Sie uns bitte mitteilen, was Sie mit md5 hash erreichen möchten?

+0

+1 für die Info, wusste nicht, md5 erstellt Hexa ... darüber, warum wir es tun - es war im Grunde ein Fehler, wo wir + anstelle von verwendet. und dann entdeckt, dass wir seltsame Ergebnisse bekommen :-) –