Уменьшение длины MD5

DiAksID
На сайте с 02.08.2008
Offline
236
#11
slavegirl:
... Я ищу способ сокращения длины результата работы функции md5() с целью экономии пространства под хранение этих результатов. По умолчанию данная функция генерирует строку, состоящую из 32 символов. Существует ли проверенный и безопасный способ уменьшение этой строки, например, до 16 символов (а лучше до 10)? Под "безопасный" я имею в виду минимизацию вероятности возникновения коллизий....

а прочитать описание самой функции времени нет?


string md5 ( string $str [, bool $raw_output] )

Вычисляет MD5 хэш строки str используя » алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш. Хэш представляет собой 32-значное шестнадцатеричное число. Если необязательный аргумент raw_output имеет значение TRUE, то возвращается бинарная строка из 16 символов.

Замечание: Необязательный аргумент raw_output был добавлен в PHP 5.0.0 и по умолчанию равен FALSE

show must go on !!!...
Glueon
На сайте с 26.07.2013
Offline
172
#12
DiAksID:
а прочитать описание самой функции времени нет?

А у вас явно не нашлось времени прочитать весь топик ;)

Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
DiAksID
На сайте с 02.08.2008
Offline
236
#13
Glueon:
А у вас явно не нашлось времени прочитать весь топик ;)

конкретный вопрос - конкретный ответ, но таки да - не нашлось ;)

slavegirl
На сайте с 25.06.2012
Offline
396
#14

DiAksID, я повторюсь, но, к сожалению, речь идет не о PHP, а о Javacript-функции, в которой нет подобных входных параметров. То есть, регулировать опции вывода у меня нет возможности. Результатом является только строка из 32 символов.

Вот сама функция, которую я использую: http://pastebin.com/20RCT4Wb

Других вариантов ее реализации (на Javascript) с указанными Вами входными параметрами мне найти не удалось.

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

❤️ АЛЬТЕРНАТИВА ADSENSE, ВЫПЛАТЫ В USDT ––  https://t.me/Keep2Share/23758
C
На сайте с 04.02.2005
Offline
291
#15

попробуйте преобразовать в 32-ричную систему, или 64-ричную

DiAksID
На сайте с 02.08.2008
Offline
236
#16
slavegirl:
... Других вариантов ее реализации (на Javascript) с указанными Вами входными параметрами мне найти не удалось.

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

slavegirl
На сайте с 25.06.2012
Offline
396
#17
Chukcha:
попробуйте преобразовать в 32-ричную систему, или 64-ричную

Благодарю Вас!

Правда, мне кажется, что найти подобный алгоритм (16 -> 32) окажется труднее, чем функцию md5() с дополнительными параметрами... Хотя Ваш вариант я считаю самым оптимальным в плане сохранения устойчивости к коллизиям и одновременного уменьшения размера хэша (благодаря использованию большего числа символов на одной позиции).

firstPR
На сайте с 24.02.2013
Offline
15
#18

Если хранения данных далеко не триллион, тогда до 16 вполне можно. До 10 нет, при большом числе данных будут совпадения, а при маленьком отсутствует смысл такого сокращения.

C
На сайте с 04.02.2005
Offline
291
#19

фигня...

у вас есть функция wordtohex, причем в конце функции md5

Так что... Все в ваших руках

slavegirl
На сайте с 25.06.2012
Offline
396
#20

Chukcha, для Вас фигня, для меня нет :)

Я знакома с Javascript всего наполовину, меньше года назад начала пытаться с ним тесно работать. Но если Вы так написали, я подозреваю, у меня есть возможность изменить ход событий в моей md5()?

Если мне удастся сократить эти хэши хоть в 2 раза, это увеличит эффективность всего проекта более чем на 10%.

Правда, если убрать конвертацию wordtohex(), на выходе окажется число в десятичной системе. Что по длине будет еще больше, чем изначальный результат. Но зато его можно попробовать перевести в более экономную систему счисления прямо в этой функции. Главное, найти алгоритм... Да, и это будет уже не MD5, а производный хэш от него.

Chukcha, в любом случае, благодарю Вас тоже!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий