Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> md5(window-1251) -> md5(utf-8) 
V
    Опции темы
Gold Dragon
Дата 24.6.2011, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



В общем суть простая.. Был сайт в кодировке window-1251 и соответственно пароли в базе хэшировались в этой кодировке. Потом сайт стал в кодировке UTF-8, данные в базе конвертнул в utf-8, но вот что делать с паролями..

Есть ли возможность преобразовать md5(window-1251) в md5(utf-8)? Или всё же только перерегистрация?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 24.6.2011, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Gold Dragon @  24.6.2011,  07:28 Найти цитируемый пост)
Есть ли возможность преобразовать md5(window-1251) в md5(utf-8)?

только если есть исходные пароли  smile

Добавлено через 27 секунд
можно воспользоваться iconv'ом для перекодирования utf8 в cp1251.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
srt
Дата 24.6.2011, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 13.5.2008

Репутация: нет
Всего: 1



на форму входа можно обработку введённых данных в кодировке ср1251 повесить
можно вновь регистрирующихся отслеживать и тд.
PM MAIL   Вверх
Gold Dragon
Дата 24.6.2011, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(MoLeX @  24.6.2011,  09:49 Найти цитируемый пост)
можно воспользоваться iconv'ом для перекодирования utf8 в cp1251. 
я в шоке.. но кажется получилось... тогда не понимаю хэш.. ведь русская буква имеет разное числовое значение в разных кодировках...

может ещё кто подтвердит что простой iconv помогает? smile

Добавлено через 1 минуту и 22 секунды
srt, легче заставить всех восстановить пароль у кого не подходит. чем создавать обработчик smile

Это сообщение отредактировал(а) Gold Dragon - 24.6.2011, 10:22


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
cutwater
Дата 24.6.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Цитата(Gold Dragon @  24.6.2011,  09:22 Найти цитируемый пост)
я в шоке.. но кажется получилось... тогда не понимаю хэш.. ведь русская буква имеет разное числовое значение в разных кодировках...


А что Вас удивляет?
Правильно разное. Вы конвертируете utf-8 в cp1251 и вычисляете хеш.
Ничего удивительного.


--------------------
user posted image
PM MAIL   Вверх
Gold Dragon
Дата 24.6.2011, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



ну я вообще-то думал что
текст в win не равно текст в utf... а значит и хеш должен быть разный.. и уже хеш в win просто не конвертируется в хеш в utf


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
patap
Дата 24.6.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



как вариант, можно в принципе, в неявном для юзеров виде, изменять пароль при входе.

1. добавить поле в базу, что-то типа новый_пароль, установить его в 0 для всех юзеров
2. юзер вводит свои данные
3.  хэшируем пароль в 1251 и в utf
4. пытаемся залогиниться, следующим запросом
Код

SELECT * FROM users WHERE (new_pass = 1 AND password = '$hash_utf') OR (new_pass = 0 AND password = '$hash_1251')

5. если юзер зашел, проверить поле new_pass
 - если оно равно 0 - то переписать старый хэш на утэфовский, и установить new_pass в 1
 - если равно 1 - ничего не делать

6. и так пока все юзере не перепишут себе хэши.

ну а новых разумется писать уже в утф.

если оно того стоит конечно...

Это сообщение отредактировал(а) patap - 24.6.2011, 10:54


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
cutwater
Дата 24.6.2011, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Цитата(Gold Dragon @  24.6.2011,  09:43 Найти цитируемый пост)
текст в win не равно текст в utf... а значит и хеш должен быть разный.. и уже хеш в win просто не конвертируется в хеш в utf 


Стоп. Стоп. Стоп. Хеш да не конвертируется. Исходная строка конвертируется, от нее берется хеш.


--------------------
user posted image
PM MAIL   Вверх
Gold Dragon
Дата 24.6.2011, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



т.е. получается.. в базе у меня пароли в кодировке win-1251 преобразованные md5

Чтобы пароли принимались на сайте где всё теперь работает в utf-8 достаточно только преобразовать хэш в базе, так?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 24.6.2011, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Gold Dragon @  24.6.2011,  11:56 Найти цитируемый пост)

Чтобы пароли принимались на сайте где всё теперь работает в utf-8 достаточно только преобразовать хэш в базе, так? 

нет.

Смотри, у тебя сейчас сайт в utf8, а пароли остались в cp1251. С помощью iconv преобразовали utf8 в cp1251, а затем сделали их хэш.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 24.6.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



так пароли то закрыты MD5 smile обратно то они не вернуться.....

Добавлено через 12 минут и 59 секунд
вот кое что написал для проверки
Код

<?php
// кодировка windiws-1251
$a = 'привет';
// конвертируем в utf-8
$b = iconv("windows-1251","UTF-8",$a);

// выводим результат
echo $a."<br>".$b;
echo "<hr>";

// хэш $a
$aa = md5($a);
// хэш $b
$bb = md5($b);

// выводим результат
echo $aa."<br>".$bb;
echo "<hr>";
 
// конвертируем хэш $aa
$aaa = iconv("windows-1251","UTF-8",$aa);

// выводим $aaa
echo $aaa;





--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
bars80080
Дата 24.6.2011, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Gold Dragon @  24.6.2011,  12:21 Найти цитируемый пост)
так пароли то закрыты MD5  обратно то они не вернуться.....

пользователь вводит пароль, строка в скрипте оказывается в кодировке utf-8, затем ты её конвертишь в cp1251, а от него берёшь хэш. и уже этот хэш и сравниваешь с тем хэшем, который в БД. то есть сравниваемые строки оказываются в одинаковых кодировках перед взятием хэша
PM MAIL WWW   Вверх
Gold Dragon
Дата 24.6.2011, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



bars80080, мне нужно старую базу паролей перегнать smile Всё новое конечно уже в utf-8

А пример кода я показал что хэш конвертируется и результат вроде одинаковый


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
bars80080
Дата 24.6.2011, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Gold Dragon @  24.6.2011,  14:43 Найти цитируемый пост)
мне нужно старую базу паролей перегнать

не перегнать, так как у тебя нет паролей, а есть только хэши.
но можно использовать старый вариант
PM MAIL WWW   Вверх
Gold Dragon
Дата 24.6.2011, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(bars80080 @  24.6.2011,  16:51 Найти цитируемый пост)
не перегнать, так как у тебя нет паролей, а есть только хэши.

так я про это и говорю...  smile Я тупо конвертирую сам хеш и получается тот же результат что если бы я преобразовал md5 в utf-8... Ну или в моём примере есть ошибка smile


Это сообщение отредактировал(а) Gold Dragon - 24.6.2011, 16:47


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.