PHP добавляет хеш MD5? - PullRequest
0 голосов
/ 28 марта 2012

Я использую знак +, чтобы добавить 2 хеша MD5 примерно так:

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

теперь, если я сделал это со строками , вот так:

'string1' + 'string2'

... PHPp выдаст мне 0 в качестве возвращаемого значения. Однако для хэшей MD5 он всегда возвращает числовое значение, для которого я не могу определить источник.

Ответы [ 4 ]

5 голосов
/ 28 марта 2012

Это будет зависеть от значений хеша, сгенерированных вашими строками. При добавлении «строковых» значений поведение PHP (а это хорошо задокументировано ) состоит в том, чтобы принимать любые начальные числовые символы и рассматривать их как целое число ... если нет ведущих числовых значений, то это будет обрабатываться как 0.

So

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

С вашими данными

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

1011 * дает *

34 + 91 => 125

Теперь, почему вы пытаетесь добавить хеш-значения?

1 голос
/ 28 марта 2012

Просто добавьте, функция md5 возвращает строковое значение, но алгоритм md5 генерирует шестнадцатеричные значения.

Также помните, что PHP поддерживает некоторое автоматическое приведение.

Именно поэтому php выдаст некоторые значения, но вы не можете обнаружить это значение, так как даже одно-символьное изменение в строке полностью меняет сгенерированный хэш MD5.

Еще вопрос очень интересный. Не могли бы вы сообщить нам, чего вы пытаетесь достичь, добавив хэш md5?

0 голосов
/ 28 марта 2012

Вы не можете добавить хеши md5 с помощью + так же, как вы не можете добавлять любые другие типы строк с помощью +. Разница ожидается и из-за правил PHP для преобразования строки в число . Сравните это:

'1string' + '2string'

с

'string1' + 'string2'

Если численное добавление md5s дает вам результат, отличный от нуля, это потому, что случайно конкретные добавляемые вами хэши начинаются с одной или нескольких десятичных цифр.

Не может быть законной причины для добавления двух строк, которые не представляют десятичные числа, поэтому не делайте этого.

0 голосов
/ 28 марта 2012

В PHP + - это числовое сложение, а . - это конкатенация строк.

Также md5(string) возвращает строку ...

:

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

Вы, вероятно, хотите добавить числовые хэши.Затем вам нужно будет преобразовать результат MD5 в число, используя hexdec () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...