Форум по 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.
Ответить с цитированием
  #8  
Старый 13.12.2010, 19:20
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Еще одна простецкая система:
"Товарищи математики доказали теорему, что простейший шифр цезаря не вскрывается никак, кроме подбора."

Какие еще математики?))))

Читал и просто ужасался...

Ксор(при длине ключа < длине сообщения), ш.Цезаря, Виженера и т.д. и т.п ломаются за раз...


Цитата:
Сообщение от Bargest
Еще одна простецкая система:
"Товарищи математики доказали теорему, что простейший шифр цезаря не вскрывается никак, кроме подбора."
Берем, прошиваем в программу константу типа такой
Код:
const pass='18 yn*&TYN(*@&M w42-3-3vl;mcxsrer'gk":%"OJEIJ';
и шифруем пароли ей.
Опять же, элементарно вскрывается дизассемблированием или анализом строки, но от глаз юзверей этого за глаза и за уши)
И?)

Показываю уличную магию:
Допустим
пароль1=уфацкпукп, после ксора получаем x1=.......;
пароль2=укеауекун, после ксора получаем x2=.......;
пароль3=акпцеререр, после ксора получаем x3=.......;

Допустим кому-то дуалось найти пасс1 ( скажем твой старый пасс годичной давности), тогда
пароль1 xor x1 = гамма
а далее х2 xor гамма = пароль2, х3 xor гамма = пароль3, и т.д.
Вся мего система взломана.
Если в паролях есть закономерности, все ще легче)

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

Если один пароль был 12345. Я зашифровал, 6789012, получил абвгдеё.
Если я нашел пароль, то да, я расшифрую, и получу резултьтат (на то оно и шифрование с открытым ключем).
Но когда я сделаю новый пароль и новый текст полученное мне ничем не поможет. Абсолютно. Если "гамма" одна и та же - то да. А если нет?..
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

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

Да, оно у меня есть. Просто файлы лаб по этому предмету назывались как shifr_1, shifr_2, etc. И вот цезаря был в первой лабе. Самое простое, это не защита, ломается как два пальца. А вот остальные шифры поинтереснее, но я уже не помню кто из кто, есть только порядочные номера.
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием
  #11  
Старый 13.12.2010, 19:40
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от Bargest
Это-то понятно, но если пароли меняются, а не один на всю жизнь, сие не прокатит.
Я говорил про одиночный зашифрованный текст цезарем.
Да неужели?))))

Снова уличная магия))))
Шифр цезаря
Ci=Pi+k,
где к пароль.
Таким образом допустим я нашел шифртекст где зашифрован пароль этим шифров.
допустим такой - erwteryteyt;
тогда мне достаточно перебрать всего 256 вариатотов.
for i=1 to 255
pacc[i]=(erwteryteyt)xor(i)
все....))))

Даже если пользователь будет использовать пароль длиной в 11 символов, количество возможных паролей для анг алфавита будет 26^11 = 3670344486987776, а тут 256))) Чувстувуешь разницу?
Тоесть пользователь будет уверен что 3670344486987776 паролей перебрать нереально, а на самом деле их то и перебирать никто не будет)))))

Цитата:
Сообщение от Bargest
Если один пароль был 12345. Я зашифровал, 6789012, получил абвгдеё.
Если я нашел пароль, то да, я расшифрую, и получу резултьтат (на то оно и шифрование с открытым ключем).
Но когда я сделаю новый пароль и новый текст полученное мне ничем не поможет. Абсолютно. Если "гамма" одна и та же - то да. А если нет?..
О да))) И сохранил 6789012 на компе?) или в своей памяти?)

Кстати бал такой не признанный гений, который так и делал.
Набери в гугле "шифрование андрейчиков".
Похлеще Дениса Попова)))

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

для одного символа 256. а если два, то 65536. Если три, то 65536*256.
Если же длина пароля равна длине шифруемого, то при подборе ты из слова "стол" получишь ВСЕ возможные комбинации 4х букв, и таким образом не поймешь никогда, что же там было.

Я все никак не могу понять.
Вот я взял строку 1234567890.
Вот я взял пароль qwertyuiop.
зашифровал одно другим: первый символ первым, второй вторым, третий третим и т.д. Получил строку.
Как её расшифровать не зная пароля и не перебирая все пароли?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 13.12.2010 в 19:51.
Ответить с цитированием
  #13  
Старый 13.12.2010, 19:48
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Блин... госпади, чё так сложно? salt + md5 + salt + sha1 + base64. И всё
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #14  
Старый 13.12.2010, 19:50
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от Bargest
для одного символа 256. а если два, то 65536. Если три, то 65536*256.
Если же длина пароля равна длине шифруемого, то при подборе ты из слова "стол" получишь ВСЕ возможные комбинации 4х букв, и таким образом не поймешь никогда, что же там было.

И?) Для каждого нового сообщения мне нужен будет новый ключ...
Где хранить его будем?)


Это шифр одноразового блокнота, или модификация шифра Вернама.
Да, Шенон доказал его невзламность, как и не практичность.
Его используют, но в таких строгих условиях, что на домашнем компе вы их никогда не достигнете.
Ответить с цитированием
  #15  
Старый 13.12.2010, 19:52
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

DJ PhoeniX +100001.
В даном случае и МД5 будет достаточно.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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