![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Cathy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
пишу обычное приложение.
возникла потребность идентифицировать пользователей паролями, соответственно хранить их в бд зашифрованными. нашла на форуме тему про шифрование с использованием MD5, где многоуважаемый LSD указал код, с помощью которого можно шифровать. скопировала.... только возникла такая проблема: когда я сохраняю пароль пользователя (111) - то генерируется одна шифрованная строка ( [B@18020cc ) а когда проверяю правильность ввода - то другая ( [B@750159 ) .... почему так происходит? |
|||
|
||||
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это не шифрование, это хеширование. Разница в том, что хеширование не обратимо. Но это и не требуется.
Проверка присходит так:
Пара тонких моментов, хеш это бинарные данные а не строка, поэтому делать с хешем toString(), бесполезно получишь [B@750159. Если хочешь можешь попробовать так:
Получишь что-то вроде:
это хеш в шестнадцатиричном виде. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
это больше похоже на преобразование Object к строке, чем на правильный вывод шифрованной строки (на экран) Есть ли уверенность что вывод на информации на экран поизведен верно? |
|||
|
||||
Cathy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
а в базу как лучше записывать? в шестнадцатиричном виде?
теперь уже нету..... ![]() Это сообщение отредактировал(а) Cathy - 14.4.2006, 11:30 |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
К моему предыдущему сообщению:
Такой символы можно увидеть если сделать так:
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Лучше записывать в бинарном виде, все равно работать можно только с бинарным видом. Создаешь в базе столбец byte(16) и пишешь в него.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Опоздал....
![]() ![]() |
|||
|
||||
Cathy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
хммм.... а у меня получилось записать шестнадцатиричное представление! и все заработало! ![]() а вы советуете бинарный вид записывать в базу исходя из чего? меньше места занимает? |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Не переживай, я тоже иногда не успеваю ![]()
Не только, дело в том, что getMD5() возвращает бинарное представление, и надо будет из строквого преобразовывать в бинарное, чтобы можно было сравнить. Если надо будет писать запрос к базе, то надо будет наоборот бинарное преобразовывать в текстовое. К тому же:
оба эти строки обозначают один и тот же хеш, но если сравнивать их как строки то результат будет разный из-за регистра. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Cathy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
в java ведь есть такой метод у строк: equalsIgnoreCase().
он скажет, что приведенные Вами строки равны. в общем, спасибо всем огромное за помощь!!!! |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Но это еще одно преобразование. Просто выводить пользователю хеш его пароля надо не часто (даже наоборот, практически никогда). А вот сравнивать хеши между собой регулярно. Поэтому я и считаю чем меньше преобразований тем лучше ![]() Но если все же решишь делать подобные преобразования, то используй не com.sun.org.apache.xerces.internal.impl.dv.util.HexBin, а какой нибудь сторонний класс, например org.apache.commons.codec.binary.Hex из Commons Codec. Т.к. этот класс могут в любой момент убрать из состава JDK или переместить в другой package. Пожалуйста, заходи почаще ![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |