SHA-256 Compression
Compression
func Compression(messageBlock []byte, initialValues []uint32, constants []uint32) []uint32 {
messageSchedule := preprocessing.BuildMessageSchedule(messageBlock)
//Working Variables
a := initialValues[0]
b := initialValues[1]
c := initialValues[2]
d := initialValues[3]
e := initialValues[4]
f := initialValues[5]
g := initialValues[6]
h := initialValues[7]
for i := 0; i < 64; i++ {
//calc temp words
tempWord1 := h + bitwiseMovements.BigSigmaOne(e) + bitwiseMovements.Choice(e, f, g) + constants[i] + messageSchedule[i]
tempWord2 := bitwiseMovements.BigSigmaZero(a) + bitwiseMovements.Majority(a, b, c)
h = g
g = f
f = e
e = d + tempWord1
d = c
c = b
b = a
a = tempWord1 + tempWord2
}
var hashValues []uint32
hashValues = append(hashValues, a+initialValues[0])
hashValues = append(hashValues, b+initialValues[1])
hashValues = append(hashValues, c+initialValues[2])
hashValues = append(hashValues, d+initialValues[3])
hashValues = append(hashValues, e+initialValues[4])
hashValues = append(hashValues, f+initialValues[5])
hashValues = append(hashValues, g+initialValues[6])
hashValues = append(hashValues, h+initialValues[7])
return hashValues
} Initialization of Registers
Computation of Temporary Words and Register Mutations
Last updated
