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

1.1.2 Алгоритм sha-2-384

В алгоритмі SHA-384 розмір блоку повідомлення дорівнює 1024 біт. Алгоритм оперує словами довжиною в 64 біти. Довжина цифрового відбитку складає 384 біт.

Алгоритм знаходження цифрового відбитку аналогічний алгоритму SHA-512, за виключенням двох моментів:

1) Початкові значення хешу H(0) , на відміну від попередніх алгоритмів, отримують шляхом взяття перших 64 біт двійкового представлення дробової частини квадратних коренів з дев’ятого по шістнадцяте простих чисел.

2) 384-бітовий цифровий відбиток отримують шляхом скорочення кінцевого значення хешу H(N) для SHA-512, тобто за формулою (1.11):

(1.11)

1.1.3 Алгоритм sha-2-512

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

SHA-512 використовує шість логічних операцій, кожна з яких оперує 64-бітними словами. Результатом кожної функції являється 64-бітне слово. Функції Ch і Maj аналогічні функціям SHA-256, а інші перевизначені і описуються наступними формулами (1.12),(1.13),(1.14),(1.15):

(1.12)

(1.13)

(1.14)

(1.15)

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

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

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

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

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

( 1.16)

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

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

(1.17)

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

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

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

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

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

(1.18)

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

(1.19)