Что называется хешированием?

Поделиться
HTML-код
  • Опубликовано: 7 янв 2015
  • Хеширование (или хэширование) - это одновременно очень простая вещь, и нечто, в чём очень просто запутаться. Многие путают хеши с другими понятиями (шифрование, цифровая подпись, и тд).
    В этом видео я описываю что такое хеширование и перечисляю требованию к функции, чтобы она могла называться алгоритмом хеширования.

Комментарии • 56

  • @user-uq4jx2ts5y
    @user-uq4jx2ts5y 9 лет назад +63

    Вы очень хорошо объясняете , вы не думали записать видео уроки по языкам программирования и их практическом применении ,мне кажется это будет очень полезно. P.s. Думаю я не один такого мнения. Кто считает также лайк.

  • @extrud96
    @extrud96 8 лет назад +1

    Спасибо. Программированием занимаюсь уже несколько лет, и теперь в полной мере раскрыл для себя понятие Хеширования.

  • @9BaroN6
    @9BaroN6 5 лет назад +3

    Блин какой же ты крутой. Подписался. Спасибо за видео и твой труд! 👍

  • @latecomedytranslate7577
    @latecomedytranslate7577 7 лет назад +1

    Хороший канал, благодарю за вашу работу

  • @it2ishmitov76
    @it2ishmitov76 4 года назад

    Прекрасный рассказчик, однозначно подписка) Спасибо Вам.

  • @Diadema566
    @Diadema566 Год назад +1

    Спасибо! Шикарное объяснение.

  • @atillaattila8900
    @atillaattila8900 6 лет назад

    Spasibo vam za paleznuyu informachsiyu

  • @lastfornit
    @lastfornit 3 года назад +1

    Все видео про хеширование в один плей-лист бы собрать. А так спасибо, доступно.

  • @user-pf9ys3lr3q
    @user-pf9ys3lr3q 5 лет назад

    Мне понравилось) спасибо за информацию)

  • @mozgotron12
    @mozgotron12 7 лет назад +1

    Спасибо, Володя. Особенно за предостережение от создания тайности алгоритма хеширования. Видимо тайность алгоритма ни к чему из-за необратимости восстановления исходных данных по хешу.

  • @zoongnguyen9377
    @zoongnguyen9377 7 лет назад

    Спасибо большое буду ждать еще видео

  • @dimitrishat8659
    @dimitrishat8659 8 лет назад +13

    Лайк за бороду ))

  • @medov.alexey
    @medov.alexey 5 лет назад +1

    Хорошая лекция =)

  • @saimonshaplygin7867
    @saimonshaplygin7867 4 года назад +2

    Володя, спасибо большое за твой труд и за то что ты не оставляешь свой проект.
    Изначально нужно различать криптографический hash и обычный hash функции. Из-за этого к каждому типу функции накладываются свои требования. На счет параллельных вычислений ты не совсем прав. В некоторых криптографических шифрах как подэтап используют паралельные вычисления. К сожалению, с ходу я не помню конкретный алгоритм.

  • @yevgenkomissarov6992
    @yevgenkomissarov6992 2 года назад

    жаль, что нельзя поставить несколько лайков за столь понятное объяснение!

  • @Poker-s_S.V.
    @Poker-s_S.V. 6 лет назад +1

    Если рассматривать хеширование с точки зрения комбинаторики то любой обратимый хеш подразумевает одинаковое количество комбинаций в параметрах комбинаций хешь и в параметрах комбинаций данных или с большими параметрами комбинаций хеша так как в таком случаи комбинаций у хеша будет больше, что легко вместит в себя все комбинации исходных данных. Таким образом не обратимый хешь всегда имеет повторяющиеся комбинации, а для этого всего навсего можно использовать наложение комбинаций из больших параметров комбинаций данных, циклически на комбинации с меньшими параметрами которые олицетворяют хешь. (ну тоесть, к примеру комбинаций данных равно шесть, а комбинаций хеша равно три, вот и получается что каждая вторая комбинация данных это повторяющаяся комбинация хешь) - КТО НЕ ПОНЯЛ Я НЕ ВИНОВАТ...)))))))))

    • @user-gc5xj6rk9l
      @user-gc5xj6rk9l 5 лет назад

      Пусть исходный текст содержит числа до ста. А хэш может содержать только 10 чисел. Придётся закодировать одним число хэша 10 чисел исходника. Нельзя определить какое число исходника за данным чилом хэша. Хэшем невозможно пользоваться.

  • @user-hy6rb1dm2x
    @user-hy6rb1dm2x 6 лет назад

    Вопрос можно поиграть на телефоне игры которые на пк

  • @MMEEEish
    @MMEEEish 9 лет назад +11

    Володя, ты рассказал про криптографическии хеш функции.
    Если нам нужна функция для ключа в hash map, то необратимость, случайное распределение и алгоритмическая последовательность нам не нужны.

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +11

      MMEEEish Замечательный комментарий!!!Дело в том, что шехмап очень часто используется для хранения данных пользователя в уникальных полях для быстрого доступа по хешу. Теперь давайте представим себе ситуацию, что эта функция обратима, и мы создаём сайт загрузки своей музыки. Значит вы записали песню, и выложили её на этот сайт. Она спокойно скачивается, и давайте представим себе что ссылка у вас на сайте в формате /index.php?hash=asdfsfsf то есть хеш известен всем. И вдруг вы мне перешли дорогу, я беру и обращаю эту функцию и создаю файл с таким-же хешем, как у вас, и загружаю его на этот сайт. Этим образом я выталкиваю вашу песню из хешмапа (так как я смог создать данные с одинаковым хешем).Так что необратимость вам нужна.Вам также нужны остальные, так как если не будет случайного распределения, то я просто начну генерировать файлы, и менять по 1 биту, и наблюдать приближается-ли мой хеш к вашему или нет. Если приближается, то это изменение бит я оставляю, если нет, то пробую менять другой. Алгоритмическая последовательность в этом конкретном примере не совсем важна. Но тут уже вопрос в том, что лучше создать алгоритм, который подходит и для пароллей и для хеширования данных, таким образом большее количество людей будут пытаться в нём разобраться, чтобы возможно найти проблему.

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +2

      Vladimir Mozhenkov Вот почему гугл мои параграфы слил в один?

    • @MMEEEish
      @MMEEEish 9 лет назад

      Vladimir Mozhenkov
      это примеры коллизии.

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +4

      MMEEEish Прочтите, что я написал. Коллизия, это когда случайным образом данные получают один хеш. А я описывал процесс генерации данных с данным хешем. Это уже не просто коллизия.

    • @PROger4ever
      @PROger4ever 9 лет назад +2

      Vladimir Mozhenkov Если речь идёт о таких классах, как Dictionary, HashSet, HashTable (C#), то проблема коллизий и генерации данных под определённый хеш давно успешно решена. При добавлении элемента вычисляется его хеш и ищется в таблице всех хешей. Если такой хеш найден, то происходит сравнение самих объектов (метод isEquals()/Equals(), который фактически сравнивает побайтово все значимые поля класса). Если хеш совпал, а сами объекты [побайтово] нет, то добавляется новая запись в таблицу С ТЕМ ЖЕ ХЕШЕМ и ссылкой на другой экземпляр класса.
      При поиске выбираются все строки с переданным хешем, а затем опять побайтово (или как-то иначе) сравниваются объекты. Совпали - значит мы нашли, если нет, то это просто коллизии или "генерация данных с тем же хешем."
      GetHash() и isEquals всегда пишутся парами (вместе).
      На мой взгляд - чуть медленнее, но надёжно.
      Да и кто выдаёт песни по хешу?)) Autoincremented ID для слобаков?)

  • @professorbis7530
    @professorbis7530 9 лет назад +3

    У меня вопросы
    почему параллельные вычисления плохо?
    Квантовый компьютер будет взламывать любой хэш легко?

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +8

      Professor Bis Хеш используется для определённых вещей. Если вам нужна скорость, то скорее всего вы ищите не хеш а контрольную сумму. То есть это не то, что параллельность - это всегда плохо, а то что "для тех процессов, где вам нужен хеш, скорость - это плохо".Хеш используется для паролей, если они слишком быстрые, то атакующий сможет слишком много паролей проверить за короткий промежуток времени. Хеш также используется для создание цепей биткоина (я собираюсь об этом серию видео делать). Там если он будет слишком быстрый, люди смогут начать воровать деньги перебивая уже существующие цепи.Если вдруг это плохая аналогия, то я попытаюсь перефразировать себя. Представьте себе, что вам нужна функция, которая достаточно медленная. Вы создаёте эту функцию, и называете её "хеш". Теперь вопрос, почему она должна быть медленной? И ответ простой, потому что вы создали её тогда, когда вам была нужна медленная функция.А про квантовые компьютеры не знаю. Возможно и будут. Тут вопрос в том, сможет-ли кто-то создать алгоритм на квантовом компьютере, который будет работать параллельно. Если вы сейчас возьмёте квантовый компьютер, и попытаетесь на нём например компресоовать видео. То вы увидите, что всё происходит очень медленно. Квантовые компы исполняют очень определённые алгоритмы очень быстро, но они не какие-то магические устройства, способные делать всё. Дальше вопрос к математикам, инженерам, и возможно к физикам. Можно-ли написать квантовый алгоритм, который выполняет хеширование быстрее чем классический компьютер? Я не знаю ответа.

    • @user-fn6og3sq3n
      @user-fn6og3sq3n 5 лет назад

      @@VladimirMozhenkov Здравствуйте , скажите пожалуйста контрольная сумма обратима?

    • @VladimirMozhenkov
      @VladimirMozhenkov  5 лет назад

      @@user-fn6og3sq3n Если контрольная сумма обратима, то это уже называется коррекция ошибок. ru.wikipedia.org/wiki/%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA
      Хотя тогда я-бы уже не называл это контрольной суммой.

  • @Toohchu
    @Toohchu 4 года назад

    Чем вызвано требование к последовательности алгоритма? Догадываюсь, что это требование со стороны безопасности, но не пойму чем опасна возможность распараллелить алгоритм.

  • @wAlxJ9
    @wAlxJ9 4 года назад

    А чем плох алгоритм который может быть запаралелен?

  • @Diadema566
    @Diadema566 Год назад

    вкратце бы рассказать, зачем нужно хеширование в жизни.

  • @nicivanov5135
    @nicivanov5135 3 года назад

    Есть фунции хеширования. Но почему такая проблема, найти исходный код например. sha 256? Не на функцию, а именно на алгорим? ссыку бы на пруф.
    Да есть инфа типо, тут корень кубический из натуральных чисел тут xor. Но где сам исходник взять?!

  • @sparrow3361
    @sparrow3361 2 года назад

    1:00 Это функция, которая принимает какие-то данные, каким-то образом преобразует эти какие-то данные, и вернет другие данные
    3:55 Функция хеширования обязательно должна возвращать нам такие же данные, т.е. хэш должен быть одинаковый.
    ??????????
    Я ничерта не понял из этого видео, про условия объяснили да, но что это за данные такие и что такое хеширование(тайтл видео) я так и не понял.
    Видимо я совсем тупой

  • @victorprohorov6201
    @victorprohorov6201 2 года назад

    а как же сделать функцию необратимой если она детерминирована?

  • @tonikkk25
    @tonikkk25 4 года назад

    Спасибо. Но остаётся один вопрос. Почему независимые хэш-генераторы генерируют некое число X одинаково? Они все работают по одному и тому же алгоритму?

    • @garrygaller2853
      @garrygaller2853 4 года назад

      Алгоритмов хэширования много. И каждый выдает свой результат. А что такое "независимый хэш-генератор" известно только вам.

    • @tonikkk25
      @tonikkk25 4 года назад

      @@garrygaller2853 я имел в виду разные сайты хэш генераторов, они же независимы друг от друга

    • @garrygaller2853
      @garrygaller2853 4 года назад +1

      @@tonikkk25 Это не имеет значения. Один и тот же алгоритм выдаст один и тот же хэш для одного и того же элемента. Почему? Потому что главное свойство хэш-алгоритмов - детерминированность. Например, если моя хэш-функция это остаток от деления на 5, то любой код, который использует мою хэш-функцию всегда будет получать от числа 12 хэш равный 2, а от числа 5 хэш равный нулю. И при этом асболютно неважно кто и где будет запускать этот код: Вася Пупкин из 5 А на своем смартфоне или астронавт на квантовом компе своего космолета.

    • @tonikkk25
      @tonikkk25 4 года назад

      Спасибо!

  • @Sleep88Walker
    @Sleep88Walker 3 года назад

    Вот это годится

  • @SuperCKAyTWorld
    @SuperCKAyTWorld 9 лет назад

    А что за "Почти университет"? Это университет который скоро заработает или организация какая-то?))

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +11

      SuperCKAyTWorld Это сайт, который я создал. Если найду других преподавателей, которые захотят объединить усилия, то это станет порталом. Пока что "Почти Университет" - это я... надеюсь это не навсегда так.

  • @alexandratsinina34
    @alexandratsinina34 4 года назад

    На удивление в этом видео мне все понятно в отличие от других

  • @P45hke
    @P45hke 5 лет назад

    Я вообще не понимаю, что такое! Чувак что, я курил!? Как это использовать в повседневной жизни? Это, типо Жене сказал, что бабки лежат в моём кошелке, но я не сказал, что он в машине в гараже. Это является hash-ом?

  • @Azimofffable
    @Azimofffable 5 лет назад

    там разница два бита

  • @user-jj5mi1yl6p
    @user-jj5mi1yl6p 7 лет назад

    У хэширования нет требования на не обратимость. У криптографического хэширования есть такое требование.

  • @user-bw8vs5xz5l
    @user-bw8vs5xz5l 9 лет назад

    Скажите почему алгоритм необратим ведь у каждого алгоритма есть формула по которой он считается и по этой формуле высчитать X если он ранее неизвестен

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +7

      +Альберт Галиакбаров
      Представьте себе формулу f(x) = x % 100
      Я вам говорю f(x) = 20. Скажите мне чему равен x?

    • @FAQTheSims3
      @FAQTheSims3 9 лет назад

      +Vladimir Mozhenkov не может быть формулы с процентами. Как ее считать то?

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +2

      +FAQ The Sims 3 Это не процент - это остаток от деления ))) просто пивык к такой записи, так как этот оператор как раз так в программировании пишется.
      То есть f(x) равно отстоку от деления x на 100.

    • @user-bw8vs5xz5l
      @user-bw8vs5xz5l 9 лет назад

      +Vladimir Mozhenkov Ну допустим здесь я не смогу найти X потому что мне не совсем понятно на что он делится. но как например "дехешируют" хеш в MD5? а в моем случае нужно найти первоначальные данные из Fnv hash 64 битный.

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +4

      +Альберт Галиакбаров Вы знаете на что он делится. На 100. Просто это необратимая операция. Вы можете получить остаток от деления одного числа на дрогое, но зная результат и делитель, вы не знаете превоначальное число.
      MD5 не совсем дехешируют, там используют так называемые Радужные Таблицы. Это довольно большая тема, и давайте я про неё запишу отдельное видео. Тема-то интересная.
      Так что следите за каналом, ответ будет.

  • @teastrum
    @teastrum 4 года назад

    ничего не понял