| Input: Integer c = (c15, c14,…, c0) in base 232; . | | Output: c mod p | (1) | s1 = (c7, c6, c5, c4, c3, c2, c1, c0), s2 = (c15, c14, c13, c12, c11, 0, c9, c8), | | s3 = (c14, 0, c15, c14, c13, 0, c14, c13), s4 = (c13, 0, 0, 0, 0, 0, c15, c14), | | s5 = (c12, 0, 0, 0, 0, 0, 0, c15), s6 = (c11, c11, c10, c15, c14, 0, c13, c12), | | s7 = (c10, c15, c14, c13, c12, 0, c11, c10), s8 = (c9, 0, 0, c9, c8, 0, c10, c9), | | s9 = (c8, 0, 0, 0, c15, 0, c12, c11), s10 = (c15, 0, 0, 0, 0, 0, 0, 0), | | s11 = (0, 0, 0, 0, 0, c14, 0, 0), s12 = (0, 0, 0, 0, 0, c13, 0, 0), | | s13 = (0, 0, 0, 0, 0, c9, 0, 0), s14 = (0, 0, 0, 0, 0, c8, 0, 0) | | Z = s1 + s2 + s3 + 2s4 + 2s5 + s6 + s7 + s8 + s9 + s10 − s11 − s12 − s13 − s14 | (2) | Return Z mod p |
|