pad pads the input message so that its length is congruent to 448 modulo 512
(message []byte)
| 21 | |
| 22 | // pad pads the input message so that its length is congruent to 448 modulo 512 |
| 23 | func pad(message []byte) []byte { |
| 24 | originalLength := len(message) * 8 |
| 25 | message = append(message, 0x80) |
| 26 | for (len(message)*8)%512 != 448 { |
| 27 | message = append(message, 0x00) |
| 28 | } |
| 29 | |
| 30 | lengthBytes := make([]byte, 8) |
| 31 | binary.BigEndian.PutUint64(lengthBytes, uint64(originalLength)) |
| 32 | message = append(message, lengthBytes...) |
| 33 | |
| 34 | return message |
| 35 | } |
| 36 | |
| 37 | // leftRotate rotates x left by n bits |
| 38 | func leftRotate(x, n uint32) uint32 { |