Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Расшифровка хешей (https://forum.antichat.xyz/forumdisplay.php?f=76)
-   -   Хэш от кириллицы в разных кодировках?! (https://forum.antichat.xyz/showthread.php?t=90784)

-=lebed=- 07.11.2008 12:27

Хэш от кириллицы в разных кодировках?!
 
Вообщем возник вопрос из-за разных кодировок такого плана. Как известно хэш вычисляется от сообщения, т.е на вход подаётся набор байт на самом деле а не набор символов...
Допустим мы имеем текст пароль он в кодировке 1251 занимает 6 байт. Вычисляем MD5 хэш, получаем: 749789e4982b0c563f6729aac100a614
Далее мы имеем этот же текст пароль в кодировке UTF8, он уже займёт 12 байт пароль - показано как он выглядит в CP1251
Вычисленный хэш e242f36f4f95f12966da8fa2efd59992

Как видим хэши разные (ну это так и должно быть потому как разные байты и разное их количество) а вот пароль-то один "пароль"

Вопрос такой: от чего будет вычисляться в PHP5 MD5 хэш если на вход подаётся пасс в кириллице в кодировке UTF8?
от 12-ти? Либо перед вычисление произойдёт преобразование из UTF8 в CP1251 ? и будет посчитан хэш уже от 6 байтов?

nerezus 07.11.2008 13:08

Эта функция работает с бинарными данными, а не со строками определенных кодировок.

-=lebed=- 07.11.2008 15:13

Цитата:

Сообщение от nerezus
Эта функция работает с бинарными данными, а не со строками определенных кодировок.

Да что ты говоришь?
Код:

Функция md5 в PHP — Возвращает MD5 хэш строки
Синтаксис
string md5 (string str [, bool raw_output])

Я знаю как работает функция и даже знаю что такое "так называемые бинарные данные :D " Мне нужен ответ на мой вопрос! Ты вообще его понял?
PHP код:

<?php
$str 
'apple';

if (
md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
    echo 
"Would you like a green or red apple?";
    exit;
}
?>

Ты мне хочешь сказать, что результат не будет
зависеть от того как кодирована переменная $str?

preda1or 07.11.2008 15:31

Насколько я знаю, может и ошибаюсь, перед тем как выполняеться md5($string),
$string->utf8 переводиться автоматом.

-=lebed=- 07.11.2008 15:53

Цитата:

Сообщение от 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

Так что думайте сами... иметь или не иметь... :D

Бля, в досовской походу набил по русски, вот правильно:
Код:

CP-1251: 53eb707315810a6b5093bc9a79e0fbfe
UTF-8: 42b2e98b197fd516ef29530fb37ee03f

Смотрим, что даёт PasswordsPro на Опля!
53eb707315810a6b5093bc9a79e0fbfe

Что даёт хэшкрэкинг?
53eb707315810a6b5093bc9a79e0fbfe

Что passcracking.com?
- чёт не отвечает... :(
insidepro.com?
- К сожелению не поддерживает...

preda1or 07.11.2008 16:47

-=lebed=- зацепили вы меня этим вопросом... заинтересовали...будем думать....

preda1or 07.11.2008 16:53

Цитата:

Работающие в 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

-=lebed=- 07.11.2008 16:54

Цитата:

Сообщение от 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''Нерезус Рё Р“СЂРёРёРЅР±РёСЂ Р›РђРњРћ!');
?>


preda1or 07.11.2008 16:54

ничего не говорит вышестоящий мой пост?)

p.s. echo iconv('utf-8','windows-1251', 'Нерезус и Гриинбир ЛАМО!');
зачетная строчка...)

-=lebed=- 07.11.2008 17:08

Цитата:

Сообщение от preda1or
ничего не говорит вышестоящий мой пост?)

Угу, как лодочку настроишь, так она и поплывёт...
P.S. Придётся заложить ещё брут нац. символов (кириллица) в кодировке UTF8 в новом движке сервиса - ведь неизвестно как настроен php на конкретном взятом сайте!... соответсвенно хэши могут быть вычисленны от паролей как я описал в примерах выше...


Время: 16:52