SviMik, смотри, он ещё думает А ну-ка задавим Валерия энтелектом!
"Хешировать" и "кодировать" это такие же разные понятия как "съесть колбасу" и "спрятать колбасу в холодильник". В первом случае съев ещё одну колбасу можно сказать такая же она на вкус или другой сорт, зато во втором случае колбасу можно достать обратно.
11. Леголегс - 05 Сентября, 2006 - 10:49:53 - перейти к сообщению
Валерий
12. Валерий - 05 Сентября, 2006 - 16:04:41 - перейти к сообщению
Леголегс
Вы, давители свободомыслия на форуме!
Наблюдай за сим написанным и тормози в нужном месте.
Что такое кодирование? Это запись чего-то чем-то таким, что непонятно для других.
Простейшее кодирование – замена одних букв (цифр) другими по некоему принципу. Принцип зовется ключом.
Скажем, число 333 можем записать как 999. Ключ – 3, враги ни в жисть не догадаются, что у нас было 333 огрызка яблока…
Если догадаются, тогда мы умножим на три, поделим на четыре, переставим в итоге первое число на последнее.
Это уже – алгоритм кодирования.
Служил в армии, был у меня ЗАС – засекречивающая аппаратура связи. Был специальный блок, в нем планки – ключи. Эти ключи устанавливались по специальной бумажке, которая действовала определенное время. Установил ключи – получил новый алгоритм кодирования (или шифрования)
К чему такое вступление?
А вот к чему.
Пока алгоритм не изменен, А будет записываться как буки, а Б – как глаголь.
Собрав много-много кода, ЭВМ расшифрует любой код. И смена алгоритма, да еще в неизвестное для врага время – самый эффектный выход. Практически не расшифровываемый.
А сейчас смотрим на хеширование у юзера номер 1.
Вот внизу два пароля
47bc e5c7 4f58 9f48 67db d57e 9ca9 f808 ---aaa
08f8 e026 0c64 4185 10ce fb2b 06ee e5cd ---bbb
Полный атас, правда?
Но – смотрим на этот атас и видим, что все знаки - 16-ая система счисления.
0123456789ABCDEF
восемь групп по четыре цифры
если я что-то вспомнил, то 47bc, это 0010 1110 1101 0011
А теперь делаем кое-что еще.
Заходим другим юзером и ставим свой пароль уже знакомый нам ааа
получили
47bc e5c7 4f58 9f48 67db d57e 9ca9 f808
bbb и получили
08f8e0260c64418510cefb2b06eee5cd
И вот это уже говорит о том, что алгоритм всегда один и тот же, действует он только на знаки пароля. Это говорит о том, что есть правило преобразования и это правило постоянное. А если знать правило – разве же нельзя «расхешировать» пароль?
Если алгоритм программы не сильно сложен, то захешировав штук надцать паролей типа 0001, 0010, 0100, 0110, 0111… и глядя на результат, уже увидим нечто. А если алгоритм очень сложен? Ну, тогда можно скормить нашей машине тысяч пару захешированных паролей, написать программу и ждать ответа.
Расхеширует.
Все. Ниспровергайте
Вы, давители свободомыслия на форуме!
Наблюдай за сим написанным и тормози в нужном месте.
Что такое кодирование? Это запись чего-то чем-то таким, что непонятно для других.
Простейшее кодирование – замена одних букв (цифр) другими по некоему принципу. Принцип зовется ключом.
Скажем, число 333 можем записать как 999. Ключ – 3, враги ни в жисть не догадаются, что у нас было 333 огрызка яблока…
Если догадаются, тогда мы умножим на три, поделим на четыре, переставим в итоге первое число на последнее.
Это уже – алгоритм кодирования.
Служил в армии, был у меня ЗАС – засекречивающая аппаратура связи. Был специальный блок, в нем планки – ключи. Эти ключи устанавливались по специальной бумажке, которая действовала определенное время. Установил ключи – получил новый алгоритм кодирования (или шифрования)
К чему такое вступление?
А вот к чему.
Пока алгоритм не изменен, А будет записываться как буки, а Б – как глаголь.
Собрав много-много кода, ЭВМ расшифрует любой код. И смена алгоритма, да еще в неизвестное для врага время – самый эффектный выход. Практически не расшифровываемый.
А сейчас смотрим на хеширование у юзера номер 1.
Вот внизу два пароля
47bc e5c7 4f58 9f48 67db d57e 9ca9 f808 ---aaa
08f8 e026 0c64 4185 10ce fb2b 06ee e5cd ---bbb
Полный атас, правда?
Но – смотрим на этот атас и видим, что все знаки - 16-ая система счисления.
0123456789ABCDEF
восемь групп по четыре цифры
если я что-то вспомнил, то 47bc, это 0010 1110 1101 0011
А теперь делаем кое-что еще.
Заходим другим юзером и ставим свой пароль уже знакомый нам ааа
получили
47bc e5c7 4f58 9f48 67db d57e 9ca9 f808
bbb и получили
08f8e0260c64418510cefb2b06eee5cd
И вот это уже говорит о том, что алгоритм всегда один и тот же, действует он только на знаки пароля. Это говорит о том, что есть правило преобразования и это правило постоянное. А если знать правило – разве же нельзя «расхешировать» пароль?
Если алгоритм программы не сильно сложен, то захешировав штук надцать паролей типа 0001, 0010, 0100, 0110, 0111… и глядя на результат, уже увидим нечто. А если алгоритм очень сложен? Ну, тогда можно скормить нашей машине тысяч пару захешированных паролей, написать программу и ждать ответа.
Расхеширует.
Все. Ниспровергайте
13. ETC - 05 Сентября, 2006 - 17:30:14 - перейти к сообщению
Валерий
Длина хэша фиксирована, а длина входящего параметра — нет. Преобразование может быть только в одну сторону, потому что (точно не знаю), на один хэш может соответствовать несколько исходных строк.
В общем, алгоритм таков, что обратного преобразования нет, смысл его — в уникальности генерируемого значения, но не для восстановления из значения исходные данные (только методом подбора).
Длина хэша фиксирована, а длина входящего параметра — нет. Преобразование может быть только в одну сторону, потому что (точно не знаю), на один хэш может соответствовать несколько исходных строк.
В общем, алгоритм таков, что обратного преобразования нет, смысл его — в уникальности генерируемого значения, но не для восстановления из значения исходные данные (только методом подбора).
14. SviMik - 06 Сентября, 2006 - 10:06:52 - перейти к сообщению
Валерий
Обьясняю хеширование (и принцип необратимости) на твоих огрызках яблок.
У тебя их 333. Делаем так: складываем все цифры. Итог: 9.
Ты можешь сказать, что имея цифру 9 что огрызков было 333 а не 63 или 36?
(Также и в хэшировании разные пароли могут иметь одинаковые хэши. Это называется коллизиями. Но алгоритм настолько сложный, что этого на практике не встречается. )
Для чего это нужно. Форум будет хранить число 9, и админ, ессно, не будет знать скока огрызков ты указал при регистрации. Но когда форум спрашивает, сколько же у тебя огрызков, ты пишешь 333, он складывает и получает тоже 9, из чего следует, что это именно твои огрызки.
Или, например, использование для сравнения больших файлов.
(наверняка видел, как иногда на сайте даётся рядом с ссылкой хеш файла. А p2p сети типа ed2k без этого вообще не могли бы существовать)
Для простоты предположим, буква "а" будет иметь код "1", "б" - 2 и т.д.
Ты скачал "Войну и мир", но сомневаешся, не побился ли файл.
Спрашиваешь: сложи коды всех букв, потом раздели на код той буквы, которая чаще всего встречается, прибавь кол-во пробелов, и подели на размер файла, делённого на количество запятых.
В результате получишь совсем коротенькую строчку вместо огромного файла. Проделав тоже самое над своим файлом, при расхождении хотябы в 1 байт ты получишь другое число. Если получится тоже самое - то 99.99% вероятность, что файлы полностью соответствует.
А теперь попробуй по этой строке восстановить книгу, и автор WinRar обанкротится
Открывай прогу Калькулятор (не забудь перейти в расширенный режим). Пиши своё число. Потом кликай на Hex (находится слева) и читай тоже самое в шестнадцатиричном виде. Всё что получилось - строка стало короче. На этом весь смысл и заканчивается. Ну ещё в этом виде компу удобнее цифры крутить. Не пытайся в этом искать что-то особенное
ЗЫ. Поправьте меня, если написал бред
Обьясняю хеширование (и принцип необратимости) на твоих огрызках яблок.
У тебя их 333. Делаем так: складываем все цифры. Итог: 9.
Ты можешь сказать, что имея цифру 9 что огрызков было 333 а не 63 или 36?
(Также и в хэшировании разные пароли могут иметь одинаковые хэши. Это называется коллизиями. Но алгоритм настолько сложный, что этого на практике не встречается. )
Для чего это нужно. Форум будет хранить число 9, и админ, ессно, не будет знать скока огрызков ты указал при регистрации. Но когда форум спрашивает, сколько же у тебя огрызков, ты пишешь 333, он складывает и получает тоже 9, из чего следует, что это именно твои огрызки.
Или, например, использование для сравнения больших файлов.
(наверняка видел, как иногда на сайте даётся рядом с ссылкой хеш файла. А p2p сети типа ed2k без этого вообще не могли бы существовать)
Для простоты предположим, буква "а" будет иметь код "1", "б" - 2 и т.д.
Ты скачал "Войну и мир", но сомневаешся, не побился ли файл.
Спрашиваешь: сложи коды всех букв, потом раздели на код той буквы, которая чаще всего встречается, прибавь кол-во пробелов, и подели на размер файла, делённого на количество запятых.
В результате получишь совсем коротенькую строчку вместо огромного файла. Проделав тоже самое над своим файлом, при расхождении хотябы в 1 байт ты получишь другое число. Если получится тоже самое - то 99.99% вероятность, что файлы полностью соответствует.
А теперь попробуй по этой строке восстановить книгу, и автор WinRar обанкротится
Открывай прогу Калькулятор (не забудь перейти в расширенный режим). Пиши своё число. Потом кликай на Hex (находится слева) и читай тоже самое в шестнадцатиричном виде. Всё что получилось - строка стало короче. На этом весь смысл и заканчивается. Ну ещё в этом виде компу удобнее цифры крутить. Не пытайся в этом искать что-то особенное
ЗЫ. Поправьте меня, если написал бред
15. Валерий - 06 Сентября, 2006 - 16:18:49 - перейти к сообщению
SviMik
Красота!
давай дальше рассуждать
Безусловно, все так.
И понял я в отношении хеширования файла – тут нет вопросов, система придумано достаточно умна – это не файл, а информация о файле. В отношении Войны и мира это наглядно и просто. В отношении куска текста это тоже наглядно и просто.
Но пароль…
Это не кусок текста.
Это три-четыре-пять букв.
Минимум – три.
А представляем мы информацию об этих трех цифрах целым рядом.
Поэтому я и говорю, что в этой явно избыточной информации можно найти и саму цифру.
Игра такая есть в автобусе: один стоит спиной ко всем, кто-то поднялся и сел.
Первый должен узнать, кто поднимался, используя минимум вопросов с «да -1» «нет-0».
По сути, то же хеширование:
Он сидит у окна 0
С ним рядом девушка 1
Он одет в пиджак 1
У него есть галстук 0
В руках у него газета 1
Вот и хеш пассажира 01101
Но пока под этого пассажира подходит несколько человек – это тот самый вариант, когда один и тот же пароль может (теоритически) иметь одинаковый хеш.
Увеличим число вопросов – увеличим наш хеш пассажира – и мы постепенно отсекаем всех остальных, делая хеш одного пассажира уникальный.
В итоге получим что-то типа 011011101
Теперь, допустим, у нас есть хеш 10010001
Смотрим наверх и и на хеш и видим, что:
Пассажир сидит у окна
Рядом с ним парень
Он не в пиджаке
Он в галстуке
У него нет газеты…
Условно порядок вопросов и истинность ответов назовем алгоритмом. И так, если мы знаем алгоритм, хеш пассажира, нам элементарно его вычислить.
Да, нельзя восстановить кусок большого текста и даже предложение типа «загасим Валерия его же способом»
Но мы говорим о трех символах.
Давайте так: кто знает программу, которая бы находила закономерность в ряде чисел?
И еще нужно точно знать коды клавиатуры (вот же были где-то записаны, потерял…)
Только не спрашивайте, чего я заморичился…
Красота!
давай дальше рассуждать
Безусловно, все так.
И понял я в отношении хеширования файла – тут нет вопросов, система придумано достаточно умна – это не файл, а информация о файле. В отношении Войны и мира это наглядно и просто. В отношении куска текста это тоже наглядно и просто.
Но пароль…
Это не кусок текста.
Это три-четыре-пять букв.
Минимум – три.
А представляем мы информацию об этих трех цифрах целым рядом.
Поэтому я и говорю, что в этой явно избыточной информации можно найти и саму цифру.
Игра такая есть в автобусе: один стоит спиной ко всем, кто-то поднялся и сел.
Первый должен узнать, кто поднимался, используя минимум вопросов с «да -1» «нет-0».
По сути, то же хеширование:
Он сидит у окна 0
С ним рядом девушка 1
Он одет в пиджак 1
У него есть галстук 0
В руках у него газета 1
Вот и хеш пассажира 01101
Но пока под этого пассажира подходит несколько человек – это тот самый вариант, когда один и тот же пароль может (теоритически) иметь одинаковый хеш.
Увеличим число вопросов – увеличим наш хеш пассажира – и мы постепенно отсекаем всех остальных, делая хеш одного пассажира уникальный.
В итоге получим что-то типа 011011101
Теперь, допустим, у нас есть хеш 10010001
Смотрим наверх и и на хеш и видим, что:
Пассажир сидит у окна
Рядом с ним парень
Он не в пиджаке
Он в галстуке
У него нет газеты…
Условно порядок вопросов и истинность ответов назовем алгоритмом. И так, если мы знаем алгоритм, хеш пассажира, нам элементарно его вычислить.
Да, нельзя восстановить кусок большого текста и даже предложение типа «загасим Валерия его же способом»
Но мы говорим о трех символах.
Давайте так: кто знает программу, которая бы находила закономерность в ряде чисел?
И еще нужно точно знать коды клавиатуры (вот же были где-то записаны, потерял…)
Только не спрашивайте, чего я заморичился…
16. Ray Wen - 06 Сентября, 2006 - 23:12:36 - перейти к сообщению
Валерий, md5 уже не один год и небыло еще нобелевских лаурятов которые разгадали бы его... Брось эту затею, уж не для наших мозгов это точно...
17. SviMik - 07 Сентября, 2006 - 13:31:58 - перейти к сообщению
Валерий
Представим, нам нужно узнать имя человека, зная только лишь
Весь смысл в том, что пассажир ЕСТЬ. А представим, пассажира на глазах нет. И что ты будешь делать?
Тоесть: есть пароль, мы его разглядываем и составляем описание.
Представим, у нас список из 30 паролей(пассажиров) и один хэш(описание). Тут всё элементарно. Хешируем каждый пароль и сравниваем с описанием.
Как ты это применишь в реале? Ведь списка-то нет.
Есть такой вариант: метод перебора. Подбираем каждый пароль по очереди. Никто тебе это делать не мешает. И такое практикуется, но с одним НО.
Прикинем из скольких пассажиров тебе придётся выбирать. Прикинем ОЧЕНЬ приблизительно, чтоб иметь представление о количестве.
В алфавите, предположим, 30 букв. Всего их предположим 2 (рус, англ). Каждая бува может быть и большой и маленькой. Итого: 120. Прибавим 10 цифр и 20 спец. символов.
Получилось 150. Значит, для пароля из одного символа, тебе надо проглядеть 150 пассажиров.
Для пароля из 2 символов будет 150*150=22500 пассажиров.
Для пароля из 3 символов будет 150*150*150=3375000 пассажиров.
Для пароля из 4 символов будет 150*150*150*150=506250000 пассажиров.
Для пароля из 5 символов будет 150*150*150*150*150=75937500000 пассажиров.
Если интересно - продолжишь сам.
Представим, нам нужно узнать имя человека, зная только лишь
Валерий пишет:
Пассажир сидит у окна
Рядом с ним парень
Он не в пиджаке
Он в галстуке
У него нет газеты…
Рядом с ним парень
Он не в пиджаке
Он в галстуке
У него нет газеты…
Весь смысл в том, что пассажир ЕСТЬ. А представим, пассажира на глазах нет. И что ты будешь делать?
Тоесть: есть пароль, мы его разглядываем и составляем описание.
Представим, у нас список из 30 паролей(пассажиров) и один хэш(описание). Тут всё элементарно. Хешируем каждый пароль и сравниваем с описанием.
Как ты это применишь в реале? Ведь списка-то нет.
Есть такой вариант: метод перебора. Подбираем каждый пароль по очереди. Никто тебе это делать не мешает. И такое практикуется, но с одним НО.
Прикинем из скольких пассажиров тебе придётся выбирать. Прикинем ОЧЕНЬ приблизительно, чтоб иметь представление о количестве.
В алфавите, предположим, 30 букв. Всего их предположим 2 (рус, англ). Каждая бува может быть и большой и маленькой. Итого: 120. Прибавим 10 цифр и 20 спец. символов.
Получилось 150. Значит, для пароля из одного символа, тебе надо проглядеть 150 пассажиров.
Для пароля из 2 символов будет 150*150=22500 пассажиров.
Для пароля из 3 символов будет 150*150*150=3375000 пассажиров.
Для пароля из 4 символов будет 150*150*150*150=506250000 пассажиров.
Для пароля из 5 символов будет 150*150*150*150*150=75937500000 пассажиров.
Если интересно - продолжишь сам.
18. Валерий - 07 Сентября, 2006 - 14:51:58 - перейти к сообщению
SviMik, где ты таких цифр набрал?
SviMik пишет:
Для пароля из 2 символов будет 150*150
Для нормально компа это же не работа - перебрать всего-то...
Слушайте, придумайте кто-нить название для темы,а?
А то мне в голову ничего не идет...
19. SviMik - 07 Сентября, 2006 - 15:42:42 - перейти к сообщению
Валерий пишет:
SviMik, где ты таких цифр набрал?
Я ж всё расписал. (Хотя брал приблизительно наугад, просто чтоб иметь представление. Цель была не сосчитать реальное количество)
Валерий пишет:
Для нормально компа это же не работа - перебрать всего-то...
Все пароли до 3 символов перебирал за 1 секунду
Мой ноут выдал скорость 5284933 паролей в секунду.
Но это в теории. На практике (да, занимался такими вещами. ногами не пинать) неделю пыхтел и ничего не выдал
4-х символьные пароли - меньше часа
5-ти символьные - сутки
6-ти символьные - десятки суток
... - лучше не начинать
Мы тут с одним маньяком уже спорили по поводу того, насколько это трудно, и что оно труднее чем кажется. Я честно дал хеш своего реального пароля. Через несколько дней он сдался
20. SviMik - 07 Сентября, 2006 - 15:47:06 - перейти к сообщению
Валерий пишет:
Для пароля из 2 символов будет 150*150
Для нормально компа это же не работа
Для нормально компа это же не работа
А для нормальной ситуации - это не пароль. Если кто-то ставит такой пароль - значит он ему заведомо не нужен :p
Учитесь пароли создавать. Теперь, дети, вы знаете, почему пароли лучше придумывать длинные. Валерий наглядно продемонстрировал, как нельзя выбирать пароль