Рубрика «hash» - 2

В статье «String enum — строковые enum» я писал о том как связывать текстовые представления с enum class — метод хороший но только если все элементы заранее известны, но зачастую бывает что строки являются некими идентификаторами и конечно же заранее не известны, а зачастую будут добавляться позднее и причем без пересборки программы.

Требования к библиотеке все теже:

  • Кроссплатформенность;
  • Минимум зависимостей;
  • Скорость чтения;
  • Простой синтаксис;

Пример конфига

{
    "objects":
    [
        {
            "id": "object1",
            "events":
            {
                "event1":{
                    "give": {"object2": 4}
                },
            }
        },
        {
            "id": "object2",
            "events":
            {
                "event2":{
                    "give": {"object1": 3}
                },
            },
            {
            "id": "object3",
            "events":
            {
                "event3":{
                    "give": {"object3": 4}
                },
            }
        },

Первая и самая простая идея которая напрашивается это:

    std::map<std::string,script> events;

Но опять же если это высоконагруженная часть программы то поиск по map может быть достаточно долгим, хэши могут дать колизии чего совсем не хочется.

Вторая идея парсить этот конфиг в 2 прохода тогда на 2-м проходе object1, object2, object3 будут уже известны и можно будет записать на них прямо указатели или ссылки. Но если зависимости еще более сложные то такой подход может и не сработать.

Я предлагаю способ позволяющий существенно сократить runtime издержки подобных конструкций

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

В недавней статье «Как надо хешировать пароли и как не надо» было озвучено предложение использовать некий локальный параметр (его еще называют перцем), как еще один рубеж защиты паролей. Несмотря на то, что это решение создает больше проблем, чем решает, большинство комментаторов поддержали эту идею, а несогласных, как водится, заминусовали. Мир в моей голове рухнул и я решил написать эту статью.

Суть

Перец — такая глобальная случайная строка, которая дописывается ко всем паролям (помимо соли). Она секретна (в отличии от соли). Таким образом, получив базу, узнать пароли становится невозможно. И все, казалось бы, хорошо…
Читать полностью »

Привет сообщество! Хостинг 1gb: ваши хеши обратимы

Несколько минут назад я учавствовал в замечательном диалоге с техподдержкой хостинга 1gb.ua. Мне нужно было продлить домен на 2 года, а опции такой нет на сайте. Вот я и обратился к ним. Вот он лог чата:

2013-10-24 19:51 Вы:
Добрый вечер, хотелось бы продлить домен на 2 года, а опций таких нет.

2013-10-24 19:51 1Gb.ua:
Добрый день. Минуту

2013-10-24 19:52 1Gb.ua:
Просто создаете и оплачиваете счет на сумму 118грн. После поступления средств, пишите нам наsupport@1gb.ua, с просьбой продлить домен на 2 года. Укажите для какого домена, логин от личного кабинета и первые 4 символа пароля от личного кабинета. Мы активируем эут услугу.

2013-10-24 19:53 Вы:
спасибо. а можно спросить, вы знаете полный пароль? т.е. они у вас хранятся в открытом виде без соли, и вы можете сравнить?

2013-10-24 19:54 1Gb.ua:
В виде хеша, хеш обратимый

2013-10-24 19:56 Вы:
все хеши обратимы, в зависимости от вычислительных мощностей, которые вы готовы потратить на обратимость.
вы мне вешаете лапшу. если вы «обращаете» хеш, то пароли считай в открытом виде.

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

Вступление

Это мой первый перевод статьи. Решил посвятить его Java, как ни странно. В статье рассказывается об изменениях строкового типа данных, которые произошли в Java.

ВАЖНО: 17 апдейт 7 версии Java не содержит изменений, описанных в этой статье.

Разделение массива символов char[]

В настоящей реализации класса String имеется 4 экземплярных поля: массив символов char[] value — содержащий символы строки, int offset — индекс первого используемого символа в массиве value, int count — количество используемых символов и int hash — кэшированное значение вычисленного хеш кода для данной строки. Как вы могли заметить, в большинстве случаев строка будет иметь значения offset = 0 и count = value.length. Единственное исключение из этого правила, возможно, когда строка создается путем вызова метода viaString.substring или любым методом, который использует данный метод (например, split).
Читать полностью »

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

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

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

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

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

И, в принципе, это правда. Если количество этих вариантов изначально было большим.
Читать полностью »

Подкаст

http://ruby.rpod.ru/284727.html

Новости

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

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

Кстати, для форматов FLAC и APE данная проблема не существует, так как они обычно изначально содержат хэш-сумму аудио-данных, прописываемую кодировщиком. Для FLAC’а значение можно получить командой metaflac --show-md5sum.

Далее — достаточно надёжный способ подсчёта…

— Подход №1
— Подход №2
— Теги Xing и Lame
— Resync
— Надёжность подсчёта

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

Предыстория

Не так давно, а именно 5 июня читатель по имени alan008 задал вопрос. Чтобы не заставлять ходить за подробностями, приведу его здесь:

Нужна помощь!

За несколько лет с разных трекеров (преимущественно c rutracker'а) разными клиентами (преимущественно uTorrent'ом) скачано много гигабайт разного полезного контента. Скачанные файлы впоследствии вручную перемещались с одного диска на другой, uTorrent их соответственно не видит. Многие .torrent файлы устарели сами по себе (например, велась раздача сериала путем добавления новых серий заменой .torrent файла).

Теперь сам вопрос: есть ли способ автоматически (не вручную) установить соответствие между имеющимися на компьютере .torrent файлами и содержимым, раскиданным по разным логическим дискам компьютера? Цель: удалить лишние (неактуальные) .torrent файлы, а для актуальных — поставить всё на раздачу. У кого какие идеи? :)

При необходимости (если это требуется) можно снова поместить все файлы данных в один каталог на одном логическом диске.

В обсуждениях сошлись на том, что если это и можно сделать, то только ручками. Мне же этот вопрос показался интересным, и после возвращения из отпуска я нашел время, чтобы в нем разобраться.

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

Прежде чем начать, стоит отметить несколько моментов:

  1. Получилось много, но не все.
  2. По формату файла .torrent будут даны лишь необходимые пояснения.
  3. Людей, чувствительных к временами некачественному коду, прошу меня заранее простить — я знаю, что многое можно было написать лучше, оптимальнее и безглючнее.

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


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