php bin2hex, base64_encode;другой вход один и тот же выход (в цикле)? - PullRequest
0 голосов
/ 16 февраля 2011

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

Почему эти функциикогда используется в цикле, приводящем к той же самой выходной строке, в то время как входная строка изменяется?У md5 и sha1 такой проблемы нет, но они необратимы, и это необходимо.

foreach ($files as $file)
{
  debug(array(bin2hex($file), $file));
}

// result
app/views/helpers/monolith.php (line 45)

Array
(
    [0] => 2f686f6d652f6d746572736d697474656e2f7075626c69635f68746d6c2f6170702f707269766174652f6d622f323031302f31322e706466
    [1] => /home/mtersmitten/public_html/app/private/mb/2010/12.pdf
)


app/views/helpers/monolith.php (line 45)

Array
(
    [0] => 2f686f6d652f6d746572736d697474656e2f7075626c69635f68746d6c2f6170702f707269766174652f6d622f323031302f31312e706466
    [1] => /home/mtersmitten/public_html/app/private/mb/2010/11.pdf
)


app/views/helpers/monolith.php (line 45)

Array
(
    [0] => 2f686f6d652f6d746572736d697474656e2f7075626c69635f68746d6c2f6170702f707269766174652f6d622f323031302f31302e706466
    [1] => /home/mtersmitten/public_html/app/private/mb/2010/10.pdf
)

Надеюсь, этот пример более понятен ...

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

На самом деле строки разные. Вы должны проверить более тщательно. Они одинаковы по большей части, потому что оба bin2hex и base64_encode кодируют последовательность байтов и не генерируют хеш, такой как sha1 или md5 .

bin2hex просто преобразует каждый символ в строке в его шестнадцатеричное значение, а для base64 проверьте статью википедии , чтобы точно узнать, почему строка является то же самое для большей части результата

2 голосов
/ 16 февраля 2011
 ... f6d622f323031302f31322e706466
                         ^
                       1 2 . p h p
 ... f6d622f323031302f31312e706466
                         ^
                       1 1 . p h p
 ... f6d622f323031302f31302e706466
                         ^
                       1 0 . p h p

Ваши "хэши" отличаются в указанном мною месте.bin2hex не является шифрованием или хэшированием, он просто берет каждый символ входной строки и преобразует его в строковую версию своего шестнадцатеричного кода ASCII.

...