Как работает SHA-256?

12+
12+

18 часов назад

ПожаловатьсяНарушение авторских прав
12+
12+

18 часов назад

ПожаловатьсяНарушение авторских прав
12+
12+

18 часов назад

Объяснение принципа работы SHA-256 с анимацией операций, используемых внутри хеш-функции. Я, однако, не криптограф, поэтому не могу объяснить причины, лежащие в основе этой конструкции (на данный момент). 00:00 - Введение ↳ 02:20 - Майнинг биткойнов 05:05 - Базовые операции 08:27 - Функции 10:58 - Константы 12:23 - Вычисление хеша ↳ 12:41 - Сообщение ↳ 13:19 - Заполнение ↳ 14:24 - Блоки сообщений ↳ 14:58 - Расписание сообщений ↳ 17:42 - Сжатие ↳ 22:30 - Итоговое значение хеша Исходный код анимации (и текстового руководства): https://github.com/in3rsha/sha256-animation Официальная спецификация: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf ==== Часто задаваемые вопросы: ==== === Какую конфигурацию компьютера вы используете? === Операционная система = Ubuntu (Xubuntu) Окружение рабочего стола = XFCE Стиль оформления = Arc-Dark Значки оформления = Papirus-Dark Стиль оконного менеджера = Numix Обои = Простой градиент от тёмно-серого к серому. Оболочка = zsh (с использованием zsh-autosuggestions) Шрифт терминала = Hack Regular === Как вычисляются константы? === Константы создаются с использованием первых 32 бит дробной части кубических корней простых чисел. Например, первая константа — это кубический корень первого простого числа (2), поэтому: ∛2 = 1,2599210498948732 Дробная часть этого числа равна: = 0,2599210498948732 Однако нам нужны 32 бита этой дробной части. Чтобы получить эти 32 бита, умножим дробь на 2^32: = 1116352408.8404646 Целая часть — это наша 32-битная константа, которую мы можем преобразовать в двоичную: = 1116352408 = 0b01000010100010100010111110011000 Вот код, демонстрирующий, как это работает: https://github.com/in3rsha/sha256-animation/blob/master/constants.rb === Как работает дополнение, если длина моего сообщения составляет X бит? === Допустим, у нас есть сообщение длиной ровно 448 бит. Нам всегда необходимо включать разделитель `1` и 64-битный размер сообщения в заполнение, что увеличивает размер сообщения с заполнением до 513 бит. Это превышает желаемый размер блока сообщения в 512 бит, поэтому мы дополняем его 511 нулями, чтобы довести его до 1024 бит (следующее число, кратное 512). Нули располагаются между разделителем и размером, вот так: [сообщение] [разделитель] {нули} [размер] Другими словами, если ваше сообщение и начальное заполнение превышают размер блока сообщения, вы дополняете его до следующего числа, кратного 512.

Название:

Как работает SHA-256?

Категория:

Разное