Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
50
Добавлен:
31.01.2021
Размер:
274.13 Кб
Скачать

1.1.1 Алгоритм sha-2-256

В даному алгоритмі розмір блоку повідомлення дорівнює 512 біт. Алгоритм використовує слова довжиною в 32 біти. Довжина цифрового відбитку складає 256 біт.

SHA-256 використовує шість логічних операцій, кожна з яких оперує 32-бітними словами. Результатом кожної функції являється також 32-бітне слово. Дані функції описуються формулами (1.1),(1.2),(1.3),(1.4),(1.5),(1.6):

(1.1)

(1.2)

(1.3)

(1.4)

(1.5)

(1.6)

де x,y,z – 32-бітні слова;

ROTRk(x) – обертання вправо слова x на k бітових позицій;

SHRk(x) – зсув вправо слова x на k бітових позицій.

На етапі первинної обробки. Початкове повідомлення розбивається на блоки по 512 біт в кожному. Останній блок доповнюється до довжини, кратної 512 біт. Спочатку додається 1, а потім нулі, щоб довжина блоку стала рівною (512 - 64 = 448) біт. В 64 біта, що залишилися, записується довжина вихідного повідомлення в бітах. Якщо останній блок має довжину понад 448, але менше 512 біт, то додаток виконується наступним чином: спочатку додається 1, потім нулі аж до кінця 512-бітного блоку, після цього створюється ще один 512-бітний блок, який заповнюється до 448 біт нулями, після чого в 64 біта, що залишилися, записується довжина вихідного повідомлення в бітах. Доповнення останнього блоку здійснюється завжди, навіть якщо повідомлення вже має потрібну довжину. Після цього кожне повідомлення можна представити у вигляді послідовності N блоків M(1), M(2), , M(N). Потім встановлюємо початкові значення хешу H(0). Розмір і число слів залежить від розміру цифрового відбитку. Ці слова отримують шляхом взяття перших 32 біт двійкового представлення дробової частини квадратних коренів перших восьми простих чисел.

На наступному кроці відбувається підготовка допоміжних змінних на основі повідомлення {Wt}. Wt обчислюють із чергового блоку повідомлення по наступній формулі (1.7):

( 1.7)

На наступному етапі ініціалізуються вісім робочих змінних a, b, c, d, e, f, , h, які слугують для (i-1)-го проміжного значення хеш-коду.

Потім відбувається нелінійні перетворення блоків. Основою алгоритму являється модуль, що складається з 64 циклічних обробок кожного блоку. Такий модуль циклічних обробок визначається наступними формулами (1.8):

(1.8)

де T1 і T2 - тимчасові змінні;

a, b, c, d, e, f, – робочі змінні для проміжних значень хешу;

Wt – допоміжні змінні на основі повідомлення;

Ki – шістдесят чотири 32-бітних констант, кожна з яких являється першими 32-ма бітами дробової частини кубічних коренів перших шістдесяти чотирьох простих чисел.

Наступним етапом є розрахунок і-го проміжного значення хешу H(i). Розрахунок здійснюється за наступними формулами (1.9):

(1.9)

Після повторення цих кроків N разів, тобто повної обробки M(N), отримуємо результуючий 256-бітовий цифровий відбиток повідомлення М за допомогою конкатенації за формулою (1.10):

(1.10)