Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.12.2010, 18:32
Nurlan Nurlan вне форума
Прохожий
 
Регистрация: 29.12.2009
Сообщения: 28
Репутация: 10
Вопрос создание пароля

привет всем! как сделать чтоб пароль можно было изменить (как на сайтах или в windows и т.д) т.е чтоб изменить пароль надо ввести старый
Ответить с цитированием
  #2  
Старый 13.12.2010, 18:39
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я в своей одной проге хранил хеш пароля.
Тогда вводишь старый, он хешируется, сравнивается с тем, что есть, и если совпадает - то пишем новый.
Для хеша можно юзать стандартные вещи (MD5 например), а можно замутить какой-нить бред из серии
Код:
 hash:=byte(s[1])^5+byte(s[2])^3-byte(s[3])^2-byte(s[4])^5...
где S - строка, a hash - int64.

"Чем бредовее будет ваш алгоритм, тем меньше шансов подобрать пароль и тем меньше будет в нем коллизий..."
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 13.12.2010 в 18:41.
Ответить с цитированием
  #3  
Старый 13.12.2010, 18:40
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Цитата:
Сообщение от Nurlan
привет всем! как сделать чтоб пароль можно было изменить (как на сайтах или в windows и т.д) т.е чтоб изменить пароль надо ввести старый
Ну как бы да.

Какой вопрос, такой и ответ.

Цитата:
Сообщение от Bargest
Тогда вводишь старый, он хешируется, сравнивается с тем, что есть, и если совпадает - то пишем новый.
Для хеша можно юзать стандартные вещи (MD5 например)
Ну для него это самый лучший вариант, а для того чтоб писать свои алгоритмы нужно хорошо понимать что ты пишешь, без хороших знаний криптосистем и математики, ничего стоящего не напишешь, выйдет ужасно дырявая система.
__________________
Меня греют ваши плюсы к моей репутации...

Последний раз редактировалось BoRoV, 13.12.2010 в 18:48.
Ответить с цитированием
  #4  
Старый 13.12.2010, 18:51
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Понятное дело. Яркий тому пример:
Код:
 hash := a[1]^2+a[2]+a[3]^2+a[4]+...
При переставлении нечетных букв между собой и четных между собой получается одинаковый хеш. Т.е. для слова "privet" и для "ivpret" будет коллизия.

Однако если не нужна ХОРОШАЯ защита, и лень думать, то можно и че-нить простенькое написать.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 13.12.2010, 18:57
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Еще одна простецкая система:
"Товарищи математики доказали теорему, что простейший шифр цезаря не вскрывается никак, кроме подбора."
Берем, прошиваем в программу константу типа такой
Код:
const pass='18 yn*&TYN(*@&M w42-3-3vl;mcxsrer'gk":%"OJEIJ';
и шифруем пароли ей.
Опять же, элементарно вскрывается дизассемблированием или анализом строки, но от глаз юзверей этого за глаза и за уши)
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #6  
Старый 13.12.2010, 19:11
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Насколько помню со студенческих год, то обратить цезаря можно. Могу ошибаться.

Дай его рализацию, если не затруднит.
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием
  #7  
Старый 13.12.2010, 19:14
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код:
j:=1;
for i:=1 to length(s) do
 begin
  s[i]:=s[i] xor pass[j]; // в стандартном алгоритме вместо XOR'а стоит +, но с XOR прикольнее
  inc(j);
  if j>length(pass) then 
   j:=1;
 end;
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025