Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Хэш от кириллицы в разных кодировках?! |

07.11.2008, 12:27
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Хэш от кириллицы в разных кодировках?!
Вообщем возник вопрос из-за разных кодировок такого плана. Как известно хэш вычисляется от сообщения, т.е на вход подаётся набор байт на самом деле а не набор символов...
Допустим мы имеем текст пароль он в кодировке 1251 занимает 6 байт. Вычисляем MD5 хэш, получаем: 749789e4982b0c563f6729aac100a614
Далее мы имеем этот же текст пароль в кодировке UTF8, он уже займёт 12 байт пароль - показано как он выглядит в CP1251
Вычисленный хэш e242f36f4f95f12966da8fa2efd59992
Как видим хэши разные (ну это так и должно быть потому как разные байты и разное их количество) а вот пароль-то один "пароль"
Вопрос такой: от чего будет вычисляться в PHP5 MD5 хэш если на вход подаётся пасс в кириллице в кодировке UTF8?
от 12-ти? Либо перед вычисление произойдёт преобразование из UTF8 в CP1251 ? и будет посчитан хэш уже от 6 байтов?
Последний раз редактировалось -=lebed=-; 07.11.2008 в 12:58..
|
|
|

07.11.2008, 13:08
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Эта функция работает с бинарными данными, а не со строками определенных кодировок.
|
|
|

07.11.2008, 15:13
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от nerezus
Эта функция работает с бинарными данными, а не со строками определенных кодировок.
Да что ты говоришь?
Код:
Функция md5 в PHP — Возвращает MD5 хэш строки
Синтаксис
string md5 (string str [, bool raw_output])
Я знаю как работает функция и даже знаю что такое "так называемые бинарные данные  " Мне нужен ответ на мой вопрос! Ты вообще его понял?
PHP код:
<?php
$str = 'apple';
if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
echo "Would you like a green or red apple?";
exit;
}
?>
Ты мне хочешь сказать, что результат не будет
зависеть от того как кодирована переменная $str?
|
|
|

07.11.2008, 15:31
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
Насколько я знаю, может и ошибаюсь, перед тем как выполняеться md5($string),
$string->utf8 переводиться автоматом.
|
|
|

07.11.2008, 15:53
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от preda1or
Насколько я знаю, может и ошибаюсь, перед тем как выполняеться md5($string),
$string->utf8 переводиться автоматом.
Вы уверены что так? Вычислите для проверки хэши от числа в HEX для UTF8 и CP1251, интересно всё же что подаётся на вход байты от 1251 или от UTF8
И БЕРИТЕ КИРИЛИЦУ! а не латиницу!
Вот так:
$STR="Опля!"
P.S. Тоже мне, сравнили лысую овцу с не постриженной... конечно хэш будет один, потому как в латинице строка в UTF8 та же самая что и в CP1251
PHP код:
<?php
$str = 'Опля!';
echo 'CP-1251: '.md5($str)."\n";
echo 'UTF-8: '.md5(iconv('windows-1251','utf-8',$str));
?>
- проверьте это...
Ну и...
Код:
CP-1251: 332bad7fc1f78b3558316280addda510
UTF-8: cd025bd5b1f060a279e5785b490e05d0
Так что думайте сами... иметь или не иметь...
Бля, в досовской походу набил по русски, вот правильно:
Код:
CP-1251: 53eb707315810a6b5093bc9a79e0fbfe
UTF-8: 42b2e98b197fd516ef29530fb37ee03f
Смотрим, что даёт PasswordsPro на Опля!
53eb707315810a6b5093bc9a79e0fbfe
Что даёт хэшкрэкинг?
53eb707315810a6b5093bc9a79e0fbfe
Что passcracking.com?
- чёт не отвечает...
insidepro.com?
- К сожелению не поддерживает...
Последний раз редактировалось -=lebed=-; 07.11.2008 в 16:09..
|
|
|

07.11.2008, 16:47
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
-=lebed=- зацепили вы меня этим вопросом... заинтересовали...будем думать....
|
|
|

07.11.2008, 16:53
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
Работающие в PHP кодировки:
ISO-8859-*, EUC-JP, UTF-8
Установки php.ini
;; Установить внутреннюю кодировку по умолчанию
;; Примечание: Используйте кодировку символов, которая работает с PHP
mbstring.internal_encoding = UTF-8 ; Установить внутреннюю кодировку UTF-8
;; Установить кодировку символов по умолчанию для HTTP-ввода
;; Примечание: Скрипт не может изменить установку http_input
mbstring.http_input = pass ; Нет конвертации
mbstring.http_input = auto ; Установить HTTP-ввод в auto
; "auto" расширяется до "ASCII,JIS,UTF-8,EUC-JP,SJIS"
mbstring.http_input = SJIS ; Установить HTTP2-ввод в SJIS
mbstring.http_input = UTF-8,SJIS,EUC-JP ; Специфицировать порядок
;; Установить кодировку символов по умолчанию для HTTP-вывода
mbstring.http_output = pass ; Нет конвертации
mbstring.http_output = UTF-8 ; Установить кодировку HTTP-вывода в UTF-8
;; Установить порядок определения кодировки символов по умолчанию
mbstring.detect_order = auto ; Установить порядок определения в auto
mbstring.detect_order = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Специфицировать порядок
;; Установить замещающий символ по умолчанию
mbstring.substitute_character = 12307 ; Специфицировать значение Unicode
mbstring.substitute_character = none ; Не печатать символ
mbstring.substitute_character = long ; Long-Пример: U+3000,JIS+7E7E
|
|
|

07.11.2008, 16:54
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от preda1or
-=lebed=- зацепили вы меня этим вопросом... заинтересовали...будем думать....
Смотрите сами, и потом не говорите что не знали!
PHP код:
<?php
$str = 'Опля!';
$CP1251HEX=bin2hex($str);
$UTF8HEX=bin2hex(iconv('windows-1251','utf-8',$str));
echo 'CP-1251: '.md5($str)."<br>";
echo 'CP-1251 (hex): '.md5(pack("H*", $CP1251HEX))."<br>";
echo 'UTF-8: '.md5(iconv('windows-1251','utf-8',$str))."<br>";
echo 'UTF-8 (hex): '.md5(pack("H*", $UTF8HEX))."<br>";
echo "БИНАРНЫЕ ДАННЫЕ <b>".$CP1251HEX."</b> И <b>".$UTF8HEX."</b> НЕ РАВНЫ ДЛЯ СТРОК КИРИЛЛИЦЫ В РАЗНЫХ КОДИРОВКАХ, ПОЭТОМУ И ХЭШИ РАЗНЫЕ!<br>";
echo 'Нихрена ничего не преобразовывается на автомате (кроме латиницы, потому как коды просто совпадают)!<br>';
echo 'Тайна нерасшифровывающихся хэшей раскрыта! походу это пассы в национальных UT8 с кодировкой в два байта!<br>Вообщем PasswordsPro курит в сторонке, потому как 5-значный пароль достаточно стойкий в нац. символах в кодировке UTF8!<br>';
echo iconv('utf-8','windows-1251', 'Нерезус и Гриинбир ЛАМО!');
?>
Последний раз редактировалось -=lebed=-; 07.11.2008 в 17:05..
|
|
|

07.11.2008, 16:54
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
ничего не говорит вышестоящий мой пост?)
p.s. echo iconv('utf-8','windows-1251', 'Нерезус и Гриинбир ЛАМО!');
зачетная строчка...)
Последний раз редактировалось preda1or; 07.11.2008 в 17:10..
|
|
|

07.11.2008, 17:08
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от preda1or
ничего не говорит вышестоящий мой пост?)
Угу, как лодочку настроишь, так она и поплывёт...
P.S. Придётся заложить ещё брут нац. символов (кириллица) в кодировке UTF8 в новом движке сервиса - ведь неизвестно как настроен php на конкретном взятом сайте!... соответсвенно хэши могут быть вычисленны от паролей как я описал в примерах выше...
Последний раз редактировалось -=lebed=-; 07.11.2008 в 17:14..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|