| 104 | } |
| 105 | |
| 106 | function md5Transform (context, block) { |
| 107 | let [a, b, c, d] = context |
| 108 | |
| 109 | /* eslint-disable no-multi-spaces */ |
| 110 | |
| 111 | // round 1 |
| 112 | a = ff(a, b, c, d, block[0], S11, 0xd76aa478) |
| 113 | d = ff(d, a, b, c, block[1], S12, 0xe8c7b756) |
| 114 | c = ff(c, d, a, b, block[2], S13, 0x242070db) |
| 115 | b = ff(b, c, d, a, block[3], S14, 0xc1bdceee) |
| 116 | a = ff(a, b, c, d, block[4], S11, 0xf57c0faf) |
| 117 | d = ff(d, a, b, c, block[5], S12, 0x4787c62a) |
| 118 | c = ff(c, d, a, b, block[6], S13, 0xa8304613) |
| 119 | b = ff(b, c, d, a, block[7], S14, 0xfd469501) |
| 120 | a = ff(a, b, c, d, block[8], S11, 0x698098d8) |
| 121 | d = ff(d, a, b, c, block[9], S12, 0x8b44f7af) |
| 122 | c = ff(c, d, a, b, block[10], S13, 0xffff5bb1) |
| 123 | b = ff(b, c, d, a, block[11], S14, 0x895cd7be) |
| 124 | a = ff(a, b, c, d, block[12], S11, 0x6b901122) |
| 125 | d = ff(d, a, b, c, block[13], S12, 0xfd987193) |
| 126 | c = ff(c, d, a, b, block[14], S13, 0xa679438e) |
| 127 | b = ff(b, c, d, a, block[15], S14, 0x49b40821) |
| 128 | |
| 129 | // round 2 |
| 130 | a = gg(a, b, c, d, block[1], S21, 0xf61e2562) |
| 131 | d = gg(d, a, b, c, block[6], S22, 0xc040b340) |
| 132 | c = gg(c, d, a, b, block[11], S23, 0x265e5a51) |
| 133 | b = gg(b, c, d, a, block[0], S24, 0xe9b6c7aa) |
| 134 | a = gg(a, b, c, d, block[5], S21, 0xd62f105d) |
| 135 | d = gg(d, a, b, c, block[10], S22, 0x02441453) |
| 136 | c = gg(c, d, a, b, block[15], S23, 0xd8a1e681) |
| 137 | b = gg(b, c, d, a, block[4], S24, 0xe7d3fbc8) |
| 138 | a = gg(a, b, c, d, block[9], S21, 0x21e1cde6) |
| 139 | d = gg(d, a, b, c, block[14], S22, 0xc33707d6) |
| 140 | c = gg(c, d, a, b, block[3], S23, 0xf4d50d87) |
| 141 | b = gg(b, c, d, a, block[8], S24, 0x455a14ed) |
| 142 | a = gg(a, b, c, d, block[13], S21, 0xa9e3e905) |
| 143 | d = gg(d, a, b, c, block[2], S22, 0xfcefa3f8) |
| 144 | c = gg(c, d, a, b, block[7], S23, 0x676f02d9) |
| 145 | b = gg(b, c, d, a, block[12], S24, 0x8d2a4c8a) |
| 146 | |
| 147 | // round 3 |
| 148 | a = hh(a, b, c, d, block[5], S31, 0xfffa3942) |
| 149 | d = hh(d, a, b, c, block[8], S32, 0x8771f681) |
| 150 | c = hh(c, d, a, b, block[11], S33, 0x6d9d6122) |
| 151 | b = hh(b, c, d, a, block[14], S34, 0xfde5380c) |
| 152 | a = hh(a, b, c, d, block[1], S31, 0xa4beea44) |
| 153 | d = hh(d, a, b, c, block[4], S32, 0x4bdecfa9) |
| 154 | c = hh(c, d, a, b, block[7], S33, 0xf6bb4b60) |
| 155 | b = hh(b, c, d, a, block[10], S34, 0xbebfbc70) |
| 156 | a = hh(a, b, c, d, block[13], S31, 0x289b7ec6) |
| 157 | d = hh(d, a, b, c, block[0], S32, 0xeaa127fa) |
| 158 | c = hh(c, d, a, b, block[3], S33, 0xd4ef3085) |
| 159 | b = hh(b, c, d, a, block[6], S34, 0x04881d05) |
| 160 | a = hh(a, b, c, d, block[9], S31, 0xd9d4d039) |
| 161 | d = hh(d, a, b, c, block[12], S32, 0xe6db99e5) |
| 162 | c = hh(c, d, a, b, block[15], S33, 0x1fa27cf8) |
| 163 | b = hh(b, c, d, a, block[2], S34, 0xc4ac5665) |