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

Поиск:

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



По идее преобразование хеша не может дать результата т.к. хеш это нечто иное, чем закодированная информация. Хеш просто нереально раскодировать, хотя бы потому, что он не наследует полный объем информации из искомого объекта. 

Поэтому если incov действительно подходит, то я буду крайне удивлен и пойду перечитывать все, что я знаю о хешах и кодировках в поисках того, как это вообще возможно.

Пока же я в этом не уверен - подскажу самый просто вариант реализации. 

Получая от пользователя ввод пароля мы его как обычно кешируем и сравниваем с кешем newPassword. Если не подошел то сравниваем с кешем oldPasword (я так понимаю, что как правильно перекодировать строку для проверки Вы сами знаетете) . Соответственно у нас несколько результатов.

1. Подошел newPassword - отлично, этот пользователь уже перешел на новый режим работы
2. Подошел oldPassword - отлично, пользователь успешно авторизовался и мы, в данном случаае имея только что введенный исходник пароля делаем из него новый кеш в нужной нам кодеровке для сохранения в newPassword. Хорошая работа - этот пользователь, сам того не подозревая перешел на новый режим работы. (поле oldPassword можно почистить, чтоб иметь возможность делать выборку пользователь не перешедших на новый режим)
3. Не подошли оба пароля - увы, тут мы нечем не поможем бедолаге =)

Для реализации нужно минут 30 максимум - вполне элементарные действия. После теста - надо придумать какую-нибудь маргетинговую фишку, чтоб нагнать народ. Ждем с пол года и делаем рассылку всем тем, у кого заполненно поле oldPassword , но не заполненно newPassword с информацией о том, что если они в течение недели не авторизируються на сервисе, то их аккаунт удалят.

=) Через неделю чистим аккаунты пользователей которые давно забыли про Ваш рессурс и удаляем лишний столбец из бд. Поздравляю - миграция закончена.
PM MAIL   Вверх
Gold Dragon
Дата 25.6.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



BuShaRt, ты всё правильно говоришь... Самое простое заставить всех перерегистрироваться. во-первых, напомнить о себе. Во-вторых, почистить базу пользователей

но(!)

Цитата(BuShaRt @  25.6.2011,  21:14 Найти цитируемый пост)
Поэтому если incov действительно подходит, то я буду крайне удивлен и пойду перечитывать все, что я знаю о хешах и кодировках в поисках того, как это вообще возможно.
Посмотри мой пример. Это то что я думаю или же всё таки я нарушил логику и пытаюсь выдать желаемое за действительное?




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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



А в переменной $a сейчас точно данные в win? 
PM MAIL   Вверх
Gold Dragon
Дата 25.6.2011, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



текстовый файл в кодировке win.. сам проверь smile

Добавлено через 24 секунды
да и хеш то разны получается


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Сейчас проверить не могу, но как буду дома проверю - уж очень интересно стало.
PM MAIL   Вверх
Gold Dragon
Дата 25.6.2011, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



BuShaRt, ну если и у тебя получится.. то я вообще в шоке smile 


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


Новичок



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

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



Сравнивать то надо две последние строки. Если текст с русскими буквами - хэши различаюся, если только латинские - одинаковые.
Латинские буквы вроде кодируются одинаково и в UTF-8 и в Win1251,  отсюда и хэши однаковые.
Если я прав, и пароли у вас на сайте только из латинских букв и цифр, то конвертировать их не нужно.

Код

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

$win1251_md5 = md5($win1251); // хэш $a
$win1251_utf8_md5 = md5($win1251_utf8); // хэш $b
$win1251_md5_utf_8 = iconv("windows-1251","UTF-8",$win1251_md5);

echo $win1251_utf8_md5." win1251_utf8_md5 <br>";
echo $win1251_md5_utf_8. " win1251_md5_utf_8";
?>


Это сообщение отредактировал(а) Alchimik - 26.6.2011, 07:15
PM MAIL   Вверх
Gold Dragon
Дата 26.6.2011, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



конечно разные строчки... :( это я что-то навертел в своём коде.. Да и по логике такое не должно быть.. В общем, тему можно закрыть..

Суть простая, заставить всех перерегистрироваться. И полезно для сайта, и для заявить о себе. Да и полезно для парольной безопасности, типа чтоб все хоть раз пароли обновили..

Конечно можно отдельный модуль написать чтоб воспринимал старые пароли с последующей конвертацией их в новые, но скорее всего это лишь трата времени 


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


Новичок



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

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



так у вас пароли на сайте не на латинице?

ps: мне бы совсем не понравилось, еслиб меня ни с того, ни с сего заставили регестрироваться заново...

Это сообщение отредактировал(а) Alchimik - 26.6.2011, 08:51
PM MAIL   Вверх
BuShaRt
Дата 26.6.2011, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Добрался до рабочей станции. Alchimik правильно подметил - в примере строка $aaa будет равная $aa т.к. именно ее и конвертируете. Но для успешности эксперимента строка $aaa должна после конвертации стать равной $bb. 

По поводу того как теперь быть, я настоятельно не рекомендую вынуждать людей проходить повторную регистрацию - пример который я привел не вынуждает Вас писать целый модуль. Надо добавить одно поле в таблицу и написать порядка с десятка строк, чтоб все работало. После этого людей надо будет вынудить не регистрироваться заново, а просто авторизоваться (под предлогом того, что они давно не заходили на сайт). Согласитесь - войти и авторизоваться не так хлопотно как заново проходить регистрацию.

Добавлено через 8 минут и 8 секунд
Еще раз привожу алгоритм.

1. Проверяем соответствие нового пароля в utf. (этот кусок кода по идее уже есть - это авторизация по умолчанию). Если результат успешен, то все отлично, если же пароль не подошел мы вместо того, чтоб сразу переходить к пункту 3, делаем пункт 2.
2. Проверяем соответствие старого пароля. Если он подошел, то хешируем исходник в utf и сохраняем как новый пароль, почистив старый. Если же и старый пароль не подошел то переходим к пункту 3.
3. Оба пароля не подошли => пользователь ввел что-то не то.

Пункту 1 и 3 у Вас уже есть, Вам просто на время надо втиснуть между ними пункт 2.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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