PHP скрипт
День добрый.
Попал в руки вот такой вот скриптик на пхп.
Меня интересует можно ли написать обратную функцию для
расшифровки.
В пхп не силён но очень надо.
Может данный форум не слишком для этого подходит но всё же.
Если у кого есть время и желание...
Если нет то скажите она обратимая или нет и всё.
Заранее спасибо.
комментариев: 11558 документов: 1036 редакций: 4118
Допишите после объявления этой функции такой код :
print '<table width="80%" border="1px"><tr><td>Plain-text</td><td>encrypt</td></tr>';
for ($i = 0; $i < 1000; $i++) { print '<tr><td>'.$i.'</td><td>'.encrypt($i).'</td></tr>'; };
print '</table>';
При значениях $i = {62, 83, 620-629, 830-839} она выдает какие-то малость неадекватные значения &)
комментариев: 11558 документов: 1036 редакций: 4118
Корреляции впечатляют. Это только то, что походя заметил невооружённым глазом.
комментариев: 11558 документов: 1036 редакций: 4118
- Байт 5 в {590-599} чередуется между 7 и f.
- Байт 31 циклически пробегает через последовательность a-e-2-6.
Отличный эксперимент, Amin.Причем мне непонятна сама идея самописных хэш-функций на РНР при разработке приложений. Если надо хранить парольные хэши для сайта/форума/учетки, вполне достаточно воспользоваться стандартной функцией MD5 / SHA1, даже если их стойкость вызывает вопросы. Поскольку в штатном режиме эти данные просто так не доступны, а если сервер уже похакали и есть возможность поправить таблицу пользователей ручками, то извращения с самописными функциями становятся бессмысленными.
Вот почему люди думают, что они "нахрапом", без глубоких математических знаний сделают более хорошую хэш-функцию, чем скажем MD5 ?
function encrypt($str) { return sha1($str); }
/* ТОЛЬКО НИ В КОЕМ СЛУЧАЕ НЕ sha1( encrypt($str) ) !!! */
Будет на порядок прямее и надежнее. Также надо подумать, нужно ли вообще отдельно переопределять (переименовывать) функцию вычисления хэша, если она используется буквально в паре мест ?
комментариев: 1060 документов: 16 редакций: 32
И то не всё заметили. На самом деле нулевой и первый байты всегда равны, а не только их младшие 4 бита (я нумерую байты с нуля от младшего к старшему)
Кроме того 4-й и 5-й тоже всегда равны.
комментариев: 11558 документов: 1036 редакций: 4118
Помимо вопросов безопасности есть ещё и чисто практические аспекты. При желании, можно написать SHA-1 или любой другой криптоалгоритм и на чистом PHP, но такая реализация при любых оптимизациях будет на порядок медленнее низкоуровневого кода на Си.
Наверняка применялась для хэширования паролей или чего-нить подобного. Насколько я понял из творений Шнайера, таких мега-функций ежедневно пишут тысячи =(