Что такое точно нападение радуги? [закрытый]

Конструктор перемещения по умолчанию для класса (без объединения) выполняет перемещение по элементам. Перемещение элемента данных необработанного массива означает перемещение каждого из элементов массива, см. [Class.copy] / 15.

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

struct wrap
{
    std::string arr[25];
};

auto w = wrap();
auto m = std::move(w); // moves the 25 `std::string`s

Вы также можете вручную вызвать конструктор перемещения элементов, например:

std::string a[3] = { /*...*/ };
std::string b[3] = {std::move(a[0]), std::move(a[1]), std::move(a[2])};

Не указывается, если std::array содержит необработанный массив. Однако он содержит элементы данных из value_type, поскольку он гарантированно является совокупным. Эти элементы данных будут перемещены, как описано выше, при вызове конструктора перемещения.

Если элементы данных std::array не являются MoveConstructible, создание экземпляра его конструктора перемещения завершится неудачей.

54
задан AstroCB 30 August 2014 в 11:22
поделиться

6 ответов

Статью в Википедии немного сложно понять. Вкратце, вы можете думать о Rainbow Table как о большом словаре с предварительно вычисленными хэшами и паролями, на основе которых они были рассчитаны.

Разница между Rainbow Tables и другими словарями заключается просто в методе хранения записей . Таблица Rainbow оптимизирована для хэшей и паролей и, таким образом, обеспечивает большую оптимизацию пространства, сохраняя при этом хорошую скорость поиска. Но по сути, это всего лишь словарь.

Когда злоумышленник крадет у вас длинный список хэшей паролей, он может быстро проверить, есть ли какие-либо из них в радужной таблице. Для тех, кто есть, таблица радуги также будет содержать, из какой строки они были хешированы.

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

64
ответ дан 7 November 2019 в 08:00
поделиться

Это когда кто-то использует радужную таблицу для взлома паролей.

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

15
ответ дан 7 November 2019 в 08:00
поделиться

Это полезная статья о радужных таблицах для непрофессионалов. (Не означает, что вы непрофессионал, но это хорошо написано и кратко.)

9
ответ дан 7 November 2019 в 08:00
поделиться

В общем, вы шифруете огромное количество возможных коротких строк открытого текста (например, паролей) и сохраняете зашифрованные значения вместе с открытым текстом. Это делает (относительно) простым поиск открытого текста, когда у вас есть зашифрованное значение.

Это наиболее полезно для слабых и / или несоленых хэшей паролей. Популярным примером является хеш LAN Manager , используемый версиями Windows до XP для хранения паролей пользователей.

Обратите внимание, что предварительно вычисленная радужная таблица даже для чего-то столь простого, как хеш LM, требует много процессорного времени для создания и занимает изрядное количество места (порядка 10 гигабайт IIRC).

1
ответ дан 7 November 2019 в 08:00
поделиться

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

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

Лучшая защита от такого рода атак - использовать соль (случайные символы) в вашем пароле. т.е. вместо того, чтобы хранить md5 (пароль), храните md5 (пароль + соль) или даже лучше md5 (соль + md5 (пароль)).

Поскольку даже с радужными таблицами будет практически невозможно сохранить все возможные соленые хэши.

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

1
ответ дан 7 November 2019 в 08:00
поделиться

Википедия - ваш друг:

http://en.wikipedia.org/wiki/Rainbow_table

1
ответ дан 7 November 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: