Running one-block SHA-256 in reverse Assume 20 rounds, t = 0:19, with Kt known but Wt XOR'd with secret key bits Sj a-h values are shown at the end of a round: t = 14 a b c d e f g h \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T1+T2 \ \ \ +T1 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ t = 15 a b c d e f g h \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T1+T2 \ \ \ +T1 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ t = 16 a b c d e f g h \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T1+T2 \ \ \ +T1 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ t = 17 a b c d e f g h \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T1+T2 \ \ \ +T1 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ t = 18 a b c d e f g h \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T1+T2 \ \ \ +T1 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ t = 19 a b c d e f g h Wt = ROTR(Sj,k) XOR Mt, t = 0:7, j = t, k = 3*j+(t>>3) ROTR(Sj,k) XOR Mt, t = 8:12, j = t-5 ROTR(Sj,k) XOR Mt, t = 12:15, j = (t-12)%3 ROTR(Sj,k) XOR func(t-2,t-7,t-15,t-16), t = 16:19, j = (63-t)%8 T1 = h + func(e,f,g) + Kt + Wt T2 = func(a,b,c) h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2