Is there any significance in being able to find message schedules that result in the same hash but require different initial hash values? Confirmed message schedule regenerates from first 16 W values, and hash produced is the same. for i in range(16, 64): w_val = (sigma1(W[i-2]) + W[i-7] + sigma0(W[i-15]) + W[i-16]) & 0xFFFFFFFF W.append(w_val)