Рубрика «хэширование»

Как работает хэширование - 1


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

Хэш-функции фундаментальны и используются повсюду.

Но что же такое хэш-функции и как они работают?

В этом посте я собираюсь развенчать мифы вокруг этих функций. Мы начнём с простой хэш-функции, узнаем, как проверить, хороша ли хэш-функция, а затем рассмотрим реальный пример применения хэш-функции: хэш-таблицу.
Читать полностью »

Семейство SHA

SHA (Алгоритмы безопасного хеширования) – это семейство криптографических хэш-функций, способных принимать сообщения произвольной длины и вычислять уникальный хэш-код фиксированной длины. Хэш-код SHA может быть использован для проверки целостности сообщения, а также для генерации цифровой подписи сообщения. На данный момент существует несколько стандартов безопасного алгоритма, каждый последующий включает более надёжные хэш-функции:

  • SHA-0 – исходная версия 160-битной хеш-функции, опубликованной в 1993 году под названием «SHA»

  • SHA-1 – исправленная версия SHA-0, опубликованная в 1995 году.

  • Читать полностью »

«Привет, мир»: разбираем каждый шаг хэш-алгоритма SHA-256 - 1

SHA-2 (Secure Hash Algorithm), в семейство которого входит SHA-256, — это один самых известных и часто используемых алгоритмов хэширования. В тексте подробно покажем каждый шаг работы этого алгоритма на реальном примере. SHA-2 отличается безопасностью (его тяжелее взломать, чем SHA-1) и скоростью.
Читать полностью »

Всем привет. На связи Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах посвященных архитектуре ПО.

Помимо преподавания, как вы могли заметить, я занимаюсь написанием авторского материала для блога OTUS на хабре и сегодняшнюю статью хочу посвятить запуску нового потока курса «Алгоритмы для разработчиков».


Введение

Хеш-таблицы (HashMap) наравне с динамическими массивами являются самыми популярными структурами данных, применяемыми в production'е, поэтому очень часто можно услышать вопросы на собеседованиях касаемо их предназначения, особенностей их внутреннего устройства, связанных с ними алгоритмов. Данная структура данных является классической и встречается не только в Java, но и во многих других языках программирования.
Читать полностью »

Когда фильтр Блума не подходит - 1

Я ещё с университета знал о фильтре Блума — вероятностной структуре данных, названной в честь Бёртона Блума. Но у меня не было возможности её использовать. В прошлом месяце такая возможность появилась — и эта структура буквально очаровала меня. Впрочем, вскоре я нашёл у неё некоторые недостатки. В этой статье — рассказ о моей краткой любовной связи с фильтром Блума.
Читать полностью »

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

Картинка к вебинару и посту взята не просто так: в определенном смысле символьное ядро Wolfram Language можно сравнить с Таносом — если бы его мощь была бы направлена в правильное русло, он мог бы стать самым мощным и полезным «добряком». Так же и с символьным ядром Wolfram — его чудовищную мощь нужно правильно использовать, а если это делать не так, оно может стать настоящим «злом», замедляющим все очень сильно. Начинающие разработчики не знают многих важнейших парадигм, идей и принципов языка Wolfram Language, пишут код, который на самом деле дико неэффективен и после этого разочаровываются, хотя тут нет вины Wolfram Language. Эту ситуацию призвана исправить эта статья.

Мне довелось работать с Wolfram Language начиная с (уже довольно далекого) 2005 года (тогда еще была версия Mathematica 5.2, сейчас уже 12-я). За эти почти 15 лет произошло очень много: добавились тысячи новых встроенных функций и областей, в которых они работают (машинное обучение, точная геометрия, работа с аудио, работа в вебе, облачные возможности, глубокая поддержка единиц измерения, интеграция с базами данных Wolfram|Alpha, географические вычисления, поддержка работы с CUDA, Python, распараллеливание операций и многое многое другое), появились новые сервисы — облако Wolfram Cloud, широко известная система вычислительных значeний Wolfram|Alpha, репозиторий функций, репозиторий нейросетей и пр.
Читать полностью »

Про хранение паролей в БД - 1

Сегодня посмотрим, как лучше всего хранить пароли в базе данных и как известные платформы решают эту задачу.
Читать полностью »

Facebook рассказал о работе модераторов в отделе по борьбе с порноместью - 1Несколько дней назад стало известно, что Facebook в Австралии запустил программу по самозащите от порномести (revenge porn). Если девушка (или парень) хочет заранее заблокировать для распространения свои интимные фотографии, то должна пропустить их через серверы Facebook. Процедура якобы конфиденциальная: нужно прислать фотографию самому себе в Messenger и пометить её как «порноместь». Тогда вычисляется хэш файла — и он помещается в базу данных для блокировки. Фотография будет заблокирована для дальнейшего распространения во всех системах Facebook, включая приватные чаты.

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

Сейчас Facebook официально подтвердил, что модерация есть. И рассказал о работе модераторов.
Читать полностью »

Facebook предлагает потенциальным жертвам порномести заранее переслать свои голые фотографии самому себе - 1Чего только не сделают люди в порыве гнева. Кто-то готов сломать телефон или выкинуть ноутбук в окно. Способы мести тоже выбирают изысканно. Один из самых популярных — выложить в социальные сети компрометирующие фотографии и видеоролики с участием бывшей девушки. Мол, так она будет опозорена, ведь фотографии увидят знакомые и родственники. Это очень распространённое явление получило название «порноместь» (revenge porn). В современном обществе сцены убийства ни у кого не вызывают удивления, но показывать секс между влюблёнными людьми — это своеобразное табу.

Facebook обещает устранить порноместь с помощью технологий. Сейчас составляется база хэшей для фотографий, которые блокируются в социальной сети. Блокировка работает как в общей социальной сети, так и в приватных чатах Messenger (фирменное приложение для IM). Аналогичную технологию в 2015 году запустила Google.

Но в системе Facebook странно то, что для пополнения базы хэшей компания полагается… на будущих жертв порномести. Их просят заранее «зарепортить» свои компрометирующие фотографии.
Читать полностью »

imageБазовая концепция блокчейна довольно проста: речь идет о распределенной базе данных, поддерживающей постоянно растущий список упорядоченных записей. Запутаться, однако, легко, поскольку всякий раз, когда мы говорим о блокчейнах, мы рассматриваем их с позиции задач, которые пытаемся решить и потому нередко начинаем подмешивать в это определение другие, очень близкие ему понятия. Это справедливо и в случае с популярными блокчейн проектами, такими, как Биткойн и Эфириум. Термин «блокчейн» обычно тесно связан с такими концепциями, как транзакции, умные контракты или криптовалюты.

Все это оправданно, но все же существенно усложняет процесс понимания принципа работы блокчейнов, особенно с точки зрения программного обеспечения с открытым исходным кодом. В этом материале я покажу вам крайне простой блокчейн, написание которого потребовало всего 200 строк Javascript-кода. Я назвал его NaiveChain.

Структура блока

Первым и логичным шагом было бы определиться со структурой блока. Чтобы сохранить максимальную простоту, мы включим в него лишь самое необходимое: индекс, метку времени, данные и хэши текущего и предыдущего блоков.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js