Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Безопасность, Шифрование
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2007, 08:26   #1
Hallo
Здесь дольше всех
Форумчанин
 
Аватар для Hallo
 
Регистрация: 29.10.2006
Сообщений: 372
По умолчанию Шифровка паролей MD5 - пароли и хеши

Вопрос от подписчика рассылки "Клуб программистов":

Цитата:
Как можно шифровать свои пароли? Я где-то видел пример, что прибавляем
19, делим на 2 и округляем результат. Но это же ламерство! Какими
функциями можно реально зашифровать пароли?
Нельзя обсуждать конкретных людей
Hallo вне форума Ответить с цитированием
Старый 01.06.2007, 12:51   #2
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Как слово для метода XOR берешь текущий день недели, шифруешь, а в
конец добавляешь символ Chr(a), где a - переменная типа byte,
лежащая во множестве [1;7], хранящая порядковый номер дня недели.

З. Ы. Метод XOR в рассылке был точно...
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 01.06.2007, 15:08   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

MD5......... =)
пыщь
JTG вне форума Ответить с цитированием
Старый 01.06.2007, 15:27   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,608
По умолчанию

http://www.programmersclub.ru/simply-art-shifr
Alar вне форума Ответить с цитированием
Старый 02.06.2007, 02:14   #5
Rouse_
Пользователь
 
Аватар для Rouse_
 
Регистрация: 31.05.2007
Сообщений: 56
По умолчанию

Как человек, занимающийся защитой ПО могу сказать только одно. Пароль - нужен только для человека, в системах аутентификации само понятие пароля сводится на другой уровень абстракции, где ошибочное применение коллизионно неустойчивых алгоритмов хеширования наподобие MD ведет к большому бадабуму...
Vae Victis
(Горе побежденным (лат.))
Демки с открытым кодом:
http://rouse.drkb.ru
Rouse_ вне форума Ответить с цитированием
Старый 02.06.2007, 07:45   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Rouse_ Посмотреть сообщение
Пароль - нужен только для человека, в системах аутентификации само понятие пароля сводится на другой уровень абстракции, где ошибочное применение коллизионно неустойчивых алгоритмов хеширования наподобие MD ведет к большому бадабуму...
вот сказал!

автору вопроса:
пароль не надо хранить, надо хранить только его ХЕШ (или CRC) и при вводе пароля получать его хеш, если хеши совпадают значит всё нормально
rpy3uH вне форума Ответить с цитированием
Старый 02.06.2007, 12:43   #7
Rouse_
Пользователь
 
Аватар для Rouse_
 
Регистрация: 31.05.2007
Сообщений: 56
По умолчанию

Если ты внимательно посмотришь, то я сказал о том что MD хэш - колизионный. Т.е. можно достаточно легко подобрать другой пароль, хэш которого совпадет с хешем оригинального пароля. Это достаточно простая математическая задача.
Vae Victis
(Горе побежденным (лат.))
Демки с открытым кодом:
http://rouse.drkb.ru
Rouse_ вне форума Ответить с цитированием
Старый 03.06.2007, 16:25   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

тебе не хватает надёжности MD5 хеша? с помошью него можно зашифровать 2^128 паролей, а это очень много!
rpy3uH вне форума Ответить с цитированием
Старый 04.06.2007, 20:13   #9
Rouse_
Пользователь
 
Аватар для Rouse_
 
Регистрация: 31.05.2007
Сообщений: 56
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
тебе не хватает надёжности MD5 хеша? с помошью него можно зашифровать 2^128 паролей, а это очень много!
Дело в том, что кол-во зашифрованных паролей - это не показатель
Показатель, это кол-во коллизий на этот диапазон.
Мне проще показать это на примере:

Код:
 
uses
  md5, clipbrd;
procedure TForm1.FormCreate(Sender: TObject);
const
  A1: array [0..127] of Byte =
    ($d1 ,$31 ,$dd ,$02 ,$c5 ,$e6 ,$ee ,$c4 ,$69 ,$3d ,$9a ,$06 ,$98 ,$af ,$f9 ,$5c,
    $2f ,$ca ,$b5 ,$87 ,$12 ,$46 ,$7e ,$ab ,$40 ,$04 ,$58 ,$3e ,$b8 ,$fb ,$7f ,$89,
    $55 ,$ad ,$34 ,$06 ,$09 ,$f4 ,$b3 ,$02 ,$83 ,$e4 ,$88 ,$83 ,$25 ,$71 ,$41 ,$5a,
    $08 ,$51 ,$25 ,$e8 ,$f7 ,$cd ,$c9 ,$9f ,$d9 ,$1d ,$bd ,$f2 ,$80 ,$37 ,$3c ,$5b,
    $d8 ,$82 ,$3e ,$31 ,$56 ,$34 ,$8f ,$5b ,$ae ,$6d ,$ac ,$d4 ,$36 ,$c9 ,$19 ,$c6,
    $dd ,$53 ,$e2 ,$b4 ,$87 ,$da ,$03 ,$fd ,$02 ,$39 ,$63 ,$06 ,$d2 ,$48 ,$cd ,$a0,
    $e9 ,$9f ,$33 ,$42 ,$0f ,$57 ,$7e ,$e8 ,$ce ,$54 ,$b6 ,$70 ,$80 ,$a8 ,$0d ,$1e,
    $c6 ,$98 ,$21 ,$bc ,$b6 ,$a8 ,$83 ,$93 ,$96 ,$f9 ,$65 ,$2b ,$6f ,$f7 ,$2a ,$70);
  A2: array [0..127] of Byte =
    ($d1 ,$31 ,$dd ,$02 ,$c5 ,$e6 ,$ee ,$c4 ,$69 ,$3d ,$9a ,$06 ,$98 ,$af ,$f9 ,$5c,
    $2f ,$ca ,$b5 ,$07 ,$12 ,$46 ,$7e ,$ab ,$40 ,$04 ,$58 ,$3e ,$b8 ,$fb ,$7f ,$89,
    $55 ,$ad ,$34 ,$06 ,$09 ,$f4 ,$b3 ,$02 ,$83 ,$e4 ,$88 ,$83 ,$25 ,$f1 ,$41 ,$5a,
    $08 ,$51 ,$25 ,$e8 ,$f7 ,$cd ,$c9 ,$9f ,$d9 ,$1d ,$bd ,$72 ,$80 ,$37 ,$3c ,$5b,
    $d8 ,$82 ,$3e ,$31 ,$56 ,$34 ,$8f ,$5b ,$ae ,$6d ,$ac ,$d4 ,$36 ,$c9 ,$19 ,$c6,
    $dd ,$53 ,$e2 ,$34 ,$87 ,$da ,$03 ,$fd ,$02 ,$39 ,$63 ,$06 ,$d2 ,$48 ,$cd ,$a0,
    $e9 ,$9f ,$33 ,$42 ,$0f ,$57 ,$7e ,$e8 ,$ce ,$54 ,$b6 ,$70 ,$80 ,$28 ,$0d ,$1e,
    $c6 ,$98 ,$21 ,$bc ,$b6 ,$a8 ,$83 ,$93 ,$96 ,$f9 ,$65 ,$ab ,$6f ,$f7 ,$2a ,$70);
var
  I: Integer;
  S, Hash1, Hash2: String;
begin
  S := '';
  for I := 0 to 127 do
    if A1[i] <> A2[i] then
      S := Format(
        '%s'#13#10'Несовпадение входных байт, порядковый номер: %d'#13#10 +
        'значения: %d <> %d', [S, I, A1[i], A2[i]]);
  Hash1 := MD5ToStr(MD5Calc(@A1[0], 128));
  Hash2 := MD5ToStr(MD5Calc(@A2[0], 128));
  S := S + sLineBreak + 'Первый контрольный хэш:' + Hash1;
  S := S + sLineBreak + 'Второй контрольный хэш:' + Hash2;
  if Hash1 = Hash2 then
    S := S + sLineBreak + 'Хэшы совпали'
  else
    S := S + sLineBreak + 'Хэшы не совпали';
  ShowMessage(S);
  Clipboard.AsText := S;
end;
Результат работы данного кода будет следующий:

Цитата:
Несовпадение входных байт, порядковый номер: 19
значения: 135 <> 7
Несовпадение входных байт, порядковый номер: 45
значения: 113 <> 241
Несовпадение входных байт, порядковый номер: 59
значения: 242 <> 114
Несовпадение входных байт, порядковый номер: 83
значения: 180 <> 52
Несовпадение входных байт, порядковый номер: 109
значения: 168 <> 40
Несовпадение входных байт, порядковый номер: 123
значения: 43 <> 171
Первый контрольный хэш:79054025255FB1A26E4BC422AEF54EB 4
Второй контрольный хэш:79054025255FB1A26E4BC422AEF54EB 4
Хэшы совпали
Как ты видишь - тут на входе два различающихся блока данных (назовем их паролями) и хэши обоих совпадают. Достаточно будет узнать сам хэш первого пароля, чтобы за достаточно непродолжительное время подобрать его аналог (второй пароль)
Система же при вводе любого из этих паролей пропустит пользователя, не важно что во втором случае был введен не тот пароль - главное что совпал его хэш
Vae Victis
(Горе побежденным (лат.))
Демки с открытым кодом:
http://rouse.drkb.ru

Последний раз редактировалось Rouse_; 04.06.2007 в 20:16.
Rouse_ вне форума Ответить с цитированием
Старый 04.06.2007, 20:44   #10
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

возможно ты прав.....
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различие MD5 Delphi и MD5 PHP Viteef Общие вопросы Delphi 14 09.02.2011 11:53
Шифровка текста, ошибки (С/С++) svetlanka Помощь студентам 2 23.03.2009 10:25
Шифровка Witaliy Общие вопросы Delphi 2 01.05.2008 21:18
Шифровка текста С++ deathsurgut Общие вопросы C/C++ 3 01.10.2007 18:58