возникла задача, прошу натолкнуть на мысль - что использовать необходимо строку, длинной до 1000 символов, преобразовать в 16-ти символьный uuid - что бы можно было получить одно из другого и обратно, соответственно uuid должен генерироваться каждый раз одного и того же слова в одинаковый. функции конвертирования из-за длинны строки использовать не получается, microtime для создания случайного отпадает. чешу "репу")
Ну это можно обсудить с тем, кто так решил. Или можно бинарное поле заюзать. Некоторые хеш функции умеют бинарный вариант возвращать. Будет 16 байт. Или хотя бы маленькие и большие буквы плюс символы.
md5 это как раз 16 байт Код (PHP): function hash2chars($hash) { $chars = ''; for ($i = 0; $i < strlen($hash); $i+=2) { $chars .= chr(hexdec('0x' . substr($hash, $i, 2))); } return $chars; } function chars2hash($chars) { $hash = ''; for ($i = 0; $i < strlen($chars); $i++) { $hash .= str_pad(dechex(ord($chars[$i])), 2, '0', STR_PAD_LEFT); } return $hash; } $hash = md5('vasya'); $chars16 = hash2chars($hash); var_dump($chars16); var_dump($hash == chars2hash($chars16));
для сравнения хеша с его прототипом, просто прогони прототип повторно через хешфункцию и сравни результаты. В обратку нельзя просто взять и размотать, увы.
http://ru2.php.%6eet/manual/en/function.hash.php Код (PHP): echo hash('md5', 'aaa', true); // G���OX�Hg��~��� сразу получаешь 16 байт
хеш то из кириллицы получается, я конечно в старпосте на это упор не делал)) но все же с кириллические символы не пойдуть
При чем тут кириллица - не кириллица? Это байты. В один байт записывается любой из 256 символов, а не только двадцать латинских
Нео, то, что ты видишь - лишь иллюзия. Символов не существует. Это машина транслирует так байтовую последовательность тебе в мозг посредством вьюпорта браузера. Сосредоточься, Нео, посмотри глубже и ты узришь истину. На правой ладони у меня браузер, на левой - hex-вьювер. Выбери правую и ты останешься обычным пользователем, все произошедшее покажется тебе бредом и ты продолжишь жить обычной жизнью. Выбери левую и я покажу тебе, насколько глубока эта кроличья нора...