Просмотр полной версии : [Вопрос] Различия в хэшировании md5
Появилась проблема. Допустим, у меня есть сочетание "тест_00110", которое мне нужно записать в базу данных в зашифрованном виде (md5).
Выполняю запрос:
mysql_query(mysql_connection, "INSERT INTO `table` (`hash_text`) VALUES (MD5('тест_00110'))");
Что появилось в базе данных: a2a567b882221b794b8b6e54fb672808
Ввожу тот же текст (тест_00110) в сайты онлайн-хэширования, все они выводят это: 9491092E40E23C1960AC95BCBEF0ED18
Не могу понять, почему хэши получаются разные..
Сделал вместо MD5 в запросе SHA2 - тоже самое, сайты показывают совершенно другой хэш, а также заметил, что такая же ситуация с функцией SHA256_PassHash..
Только что попробовал - все работает правильно, на выходе получается хэш 9491092e40e23c1960ac95bcbef0ed18
Сам сейчас использую SHA-2 с солью, все работает хорошо.
Может я делаю что-то не так?
new query[200], string[11] = "это_тест01";
mysql_format(mysql_connection, query, sizeof(query), "INSERT INTO `accounts` (`password`) VALUES (MD5('%s'))", string);
mysql_function_query(mysql_connection, query, false, "", "");
База данных:
http://i.imgur.com/fLfc55j.png
Сайты онлайн-хэширования:
http://i.imgur.com/d2ZWaQI.png
http://i.imgur.com/w5pyxZW.png
Твоя строка в MySQL идёт в кодировке cp1251, на сайтах онлайн хеширования, как правило, используется UTF-8.
Это можно легко проверить зайдя на один из этих сайтов и принудительно установить кодировку cp1251 (Windows-1251), результат хэширования строки "это_тест01" будет аналогичным результату твоего запроса в БД.
Твоя строка в MySQL идёт в кодировке cp1251, на сайтах онлайн хеширования, как правило, используется UTF-8.
Это можно легко проверить зайдя на один из этих сайтов и принудительно установить кодировку cp1251 (Windows-1251), результат хэширования строки "это_тест01" будет аналогичным результату твоего запроса в БД.
Эм, кодировка должна меняться в функционале сайтов или браузере? затупил(
Эм, кодировка должна меняться в функционале сайтов или браузере? затупил(
Можешь поменять в браузере:
http://ihost.pro-pawn.ru/image.php?dt=0UXK (http://ihost.pro-pawn.ru/?pt=0UXK)
Чтобы исправить в скрипте, тебе нужно установить кодировку UTF-8 с БД с помощью функции mysql_set_charset.
Чтобы исправить в скрипте, тебе нужно установить кодировку UTF-8 с БД с помощью функции mysql_set_charset.
Я думаю лучше этого не делать, ибо потом будет не соответствие кодировок. Возникнут вопросы типа "Почему русские шрифты отображаются как карякулы" и т.д.
По теме:
Как уже ziggi ответил это из за разной кодировки. У тебя обязательно должны совпадать хэши с бд и с сайтами?
У тебя обязательно должны совпадать хэши с бд и с сайтами?
Ну желательно, имеется связь с сайтом
Ну желательно, имеется связь с сайтом
тогда напиши для сайта php скрипт, который будет получать с базы пароль с win1251 кодировкой потом дехэш, далее изменит кодировку результата в UTF-8
тогда напиши для сайта php скрипт, который будет получать с базы пароль с win1251 кодировкой потом дехэш, далее изменит кодировку результата в UTF-8
Да, подумаю об этом. Просто боюсь, если что-то пойдёт не так, то на всех аккаунтах просто полетят пароли :(
Я думаю лучше этого не делать, ибо потом будет не соответствие кодировок. Возникнут вопросы типа "Почему русские шрифты отображаются как карякулы" и т.д.
Не соответствие кодировок уже есть, поэтому это лучше сделать. Да, придётся немного всё настроить, но это избавит от возможных проблем в будущем. Небольшой гайд настройке и использовании MySQL можно посмотреть здесь (http://forum.sa-mp.com/showthread.php?t=489467).
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot