к представляет собой массив статического значения инициализации и остается одинаковой для всех хэшей. Он был выбран NIST, но это не является «ничего на мой номер рукав» с приличным критериями отбора. Было бы трудно для тех констант, чтобы повлиять на безопасность хэша. Вы должны верить, что существует определенная взаимосвязь между дробной частью первых 64 последовательных корней кубы, что NIST знал о этой слабости, и никто в криптографическом сообществе обнаружили, что слабость, так как SHA-2 был освобожден.
ш инициализируется из текущего блока до 64 раундов, так что изменяется от сообщения к сообщению, и даже блокировать блокировать. Алгоритм для генерации ш массива происходит от SHA-2, но вход, чтобы сообщение было хэшированным.
Оба 64 значений массивов. В каждом раунде значения, введенного в "" будет меняться, так что служит для предотвращения столкновений раунда, которые могут подорвать безопасность функции хеширования. Это is't точно точным, но это может помочь думать о них, как энтропия инжекторов. Т является значение 0-индекс для текущего цикла, так только одно значение используется в каждом раунде, и каждый раунд имеет другое значение (т.е. для 1 раунда ш [0] и к [0] используется для круглых 64 мас [63] и к [63] используется).
Инициализировать массив круглых констант:
(первые 32 бита дробных частей куба корней первых 64 простых чисел 2..311):
к [0..63]: =
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
Таким образом, данные из предыдущего раунда просто сдвигаются?
В основном смещен за исключением е и а. Таким образом, для каждого из 64 раундов
ч = г
G = F
е = е
е = д + Н + Ч (д, е, ж) + sum1 (е) + W [T] + к [т]
D = C
с = Ь
Ь = а
а = Л + Ч (д, е, ж) + sum1 (е) + W [T] + к [т] + Sum0 (а) + Maj (а, б, в)
Обратите внимание, все сложение по модулю 2 ^ 32 так переполняется "обтекать", Есть несколько способов, в которых алгоритм SHA-2 может быть оптимизирован для выполнения, но при обучении полезно смотреть на эталонном дизайне.