📄 md5c.i
字号:
md5c.c 133:
md5c.c 134:
md5c.c 135: if (inputLen >= partLen) {
md5c.c 136: MD5_memcpy
md5c.c 137: ((POINTER)&context->buffer[index], (POINTER)input, partLen);
md5c.c 138: MD5Transform (context->state, context->buffer);
md5c.c 139:
md5c.c 140: for (i = partLen; i + 63 < inputLen; i += 64)
md5c.c 141: MD5Transform (context->state, &input[i]);
md5c.c 142:
md5c.c 143: index = 0;
md5c.c 144: }
md5c.c 145: else
md5c.c 146: i = 0;
md5c.c 147:
md5c.c 148:
md5c.c 149: MD5_memcpy
md5c.c 150: ((POINTER)&context->buffer[index], (POINTER)&input[i],
md5c.c 151: inputLen-i);
md5c.c 152: }
md5c.c 153:
md5c.c 154:
md5c.c 155:
md5c.c 156:
md5c.c 157: void MD5Final (digest, context)
md5c.c 158: unsigned char digest[16];
md5c.c 159: MD5_CTX *context;
md5c.c 160: {
md5c.c 161: unsigned char bits[8];
md5c.c 162: unsigned int index, padLen;
md5c.c 163:
md5c.c 164:
md5c.c 165: Encode (bits, context->count, 8);
md5c.c 166:
md5c.c 167:
md5c.c 168:
md5c.c 169: index = (unsigned int)((context->count[0] >> 3) & 0x3f);
md5c.c 170: padLen = (index < 56) ? (56 - index) : (120 - index);
md5c.c 171: MD5Update (context, PADDING, padLen);
md5c.c 172:
md5c.c 173:
md5c.c 174: MD5Update (context, bits, 8);
md5c.c 175:
md5c.c 176:
md5c.c 177: Encode (digest, context->state, 16);
md5c.c 178:
md5c.c 179:
md5c.c 180:
md5c.c 181: MD5_memset ((POINTER)context, 0, sizeof (*context));
md5c.c 182: }
md5c.c 183:
md5c.c 184:
md5c.c 185:
md5c.c 186: static void MD5Transform (state, block)
md5c.c 187: UINT4 state[4];
md5c.c 188: unsigned char block[64];
md5c.c 189: {
md5c.c 190: UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
md5c.c 191:
md5c.c 192: Decode (x, block, 64);
md5c.c 193:
md5c.c 194:
md5c.c 195: { (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[ 0]) + (UINT4)(0xd76aa478); (a) = ((((a)) << ((7))) | (((a)) >> (32-((7))))) ; (a) += (b); } ;
md5c.c 196: { (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[ 1]) + (UINT4)(0xe8c7b756); (d) = ((((d)) << ((12))) | (((d)) >> (32-((12))))) ; (d) += (a); } ;
md5c.c 197: { (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[ 2]) + (UINT4)(0x242070db); (c) = ((((c)) << ((17))) | (((c)) >> (32-((17))))) ; (c) += (d); } ;
md5c.c 198: { (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[ 3]) + (UINT4)(0xc1bdceee); (b) = ((((b)) << ((22))) | (((b)) >> (32-((22))))) ; (b) += (c); } ;
md5c.c 199: { (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[ 4]) + (UINT4)(0xf57c0faf); (a) = ((((a)) << ((7))) | (((a)) >> (32-((7))))) ; (a) += (b); } ;
md5c.c 200: { (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[ 5]) + (UINT4)(0x4787c62a); (d) = ((((d)) << ((12))) | (((d)) >> (32-((12))))) ; (d) += (a); } ;
md5c.c 201: { (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[ 6]) + (UINT4)(0xa8304613); (c) = ((((c)) << ((17))) | (((c)) >> (32-((17))))) ; (c) += (d); } ;
md5c.c 202: { (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[ 7]) + (UINT4)(0xfd469501); (b) = ((((b)) << ((22))) | (((b)) >> (32-((22))))) ; (b) += (c); } ;
md5c.c 203: { (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[ 8]) + (UINT4)(0x698098d8); (a) = ((((a)) << ((7))) | (((a)) >> (32-((7))))) ; (a) += (b); } ;
md5c.c 204: { (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[ 9]) + (UINT4)(0x8b44f7af); (d) = ((((d)) << ((12))) | (((d)) >> (32-((12))))) ; (d) += (a); } ;
md5c.c 205: { (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[10]) + (UINT4)(0xffff5bb1); (c) = ((((c)) << ((17))) | (((c)) >> (32-((17))))) ; (c) += (d); } ;
md5c.c 206: { (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[11]) + (UINT4)(0x895cd7be); (b) = ((((b)) << ((22))) | (((b)) >> (32-((22))))) ; (b) += (c); } ;
md5c.c 207: { (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[12]) + (UINT4)(0x6b901122); (a) = ((((a)) << ((7))) | (((a)) >> (32-((7))))) ; (a) += (b); } ;
md5c.c 208: { (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[13]) + (UINT4)(0xfd987193); (d) = ((((d)) << ((12))) | (((d)) >> (32-((12))))) ; (d) += (a); } ;
md5c.c 209: { (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[14]) + (UINT4)(0xa679438e); (c) = ((((c)) << ((17))) | (((c)) >> (32-((17))))) ; (c) += (d); } ;
md5c.c 210: { (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[15]) + (UINT4)(0x49b40821); (b) = ((((b)) << ((22))) | (((b)) >> (32-((22))))) ; (b) += (c); } ;
md5c.c 211:
md5c.c 212:
md5c.c 213: { (a) += ((((b)) & ((d))) | (((c)) & (~(d)))) + (x[ 1]) + (UINT4)(0xf61e2562); (a) = ((((a)) << ((5))) | (((a)) >> (32-((5))))) ; (a) += (b); } ;
md5c.c 214: { (d) += ((((a)) & ((c))) | (((b)) & (~(c)))) + (x[ 6]) + (UINT4)(0xc040b340); (d) = ((((d)) << ((9))) | (((d)) >> (32-((9))))) ; (d) += (a); } ;
md5c.c 215: { (c) += ((((d)) & ((b))) | (((a)) & (~(b)))) + (x[11]) + (UINT4)(0x265e5a51); (c) = ((((c)) << ((14))) | (((c)) >> (32-((14))))) ; (c) += (d); } ;
md5c.c 216: { (b) += ((((c)) & ((a))) | (((d)) & (~(a)))) + (x[ 0]) + (UINT4)(0xe9b6c7aa); (b) = ((((b)) << ((20))) | (((b)) >> (32-((20))))) ; (b) += (c); } ;
md5c.c 217: { (a) += ((((b)) & ((d))) | (((c)) & (~(d)))) + (x[ 5]) + (UINT4)(0xd62f105d); (a) = ((((a)) << ((5))) | (((a)) >> (32-((5))))) ; (a) += (b); } ;
md5c.c 218: { (d) += ((((a)) & ((c))) | (((b)) & (~(c)))) + (x[10]) + (UINT4)(0x2441453); (d) = ((((d)) << ((9))) | (((d)) >> (32-((9))))) ; (d) += (a); } ;
md5c.c 219: { (c) += ((((d)) & ((b))) | (((a)) & (~(b)))) + (x[15]) + (UINT4)(0xd8a1e681); (c) = ((((c)) << ((14))) | (((c)) >> (32-((14))))) ; (c) += (d); } ;
md5c.c 220: { (b) += ((((c)) & ((a))) | (((d)) & (~(a)))) + (x[ 4]) + (UINT4)(0xe7d3fbc8); (b) = ((((b)) << ((20))) | (((b)) >> (32-((20))))) ; (b) += (c); } ;
md5c.c 221: { (a) += ((((b)) & ((d))) | (((c)) & (~(d)))) + (x[ 9]) + (UINT4)(0x21e1cde6); (a) = ((((a)) << ((5))) | (((a)) >> (32-((5))))) ; (a) += (b); } ;
md5c.c 222: { (d) += ((((a)) & ((c))) | (((b)) & (~(c)))) + (x[14]) + (UINT4)(0xc33707d6); (d) = ((((d)) << ((9))) | (((d)) >> (32-((9))))) ; (d) += (a); } ;
md5c.c 223: { (c) += ((((d)) & ((b))) | (((a)) & (~(b)))) + (x[ 3]) + (UINT4)(0xf4d50d87); (c) = ((((c)) << ((14))) | (((c)) >> (32-((14))))) ; (c) += (d); } ;
md5c.c 224: { (b) += ((((c)) & ((a))) | (((d)) & (~(a)))) + (x[ 8]) + (UINT4)(0x455a14ed); (b) = ((((b)) << ((20))) | (((b)) >> (32-((20))))) ; (b) += (c); } ;
md5c.c 225: { (a) += ((((b)) & ((d))) | (((c)) & (~(d)))) + (x[13]) + (UINT4)(0xa9e3e905); (a) = ((((a)) << ((5))) | (((a)) >> (32-((5))))) ; (a) += (b); } ;
md5c.c 226: { (d) += ((((a)) & ((c))) | (((b)) & (~(c)))) + (x[ 2]) + (UINT4)(0xfcefa3f8); (d) = ((((d)) << ((9))) | (((d)) >> (32-((9))))) ; (d) += (a); } ;
md5c.c 227: { (c) += ((((d)) & ((b))) | (((a)) & (~(b)))) + (x[ 7]) + (UINT4)(0x676f02d9); (c) = ((((c)) << ((14))) | (((c)) >> (32-((14))))) ; (c) += (d); } ;
md5c.c 228: { (b) += ((((c)) & ((a))) | (((d)) & (~(a)))) + (x[12]) + (UINT4)(0x8d2a4c8a); (b) = ((((b)) << ((20))) | (((b)) >> (32-((20))))) ; (b) += (c); } ;
md5c.c 229:
md5c.c 230:
md5c.c 231: { (a) += (((b)) ^ ((c)) ^ ((d))) + (x[ 5]) + (UINT4)(0xfffa3942); (a) = ((((a)) << ((4))) | (((a)) >> (32-((4))))) ; (a) += (b); } ;
md5c.c 232: { (d) += (((a)) ^ ((b)) ^ ((c))) + (x[ 8]) + (UINT4)(0x8771f681); (d) = ((((d)) << ((11))) | (((d)) >> (32-((11))))) ; (d) += (a); } ;
md5c.c 233: { (c) += (((d)) ^ ((a)) ^ ((b))) + (x[11]) + (UINT4)(0x6d9d6122); (c) = ((((c)) << ((16))) | (((c)) >> (32-((16))))) ; (c) += (d); } ;
md5c.c 234: { (b) += (((c)) ^ ((d)) ^ ((a))) + (x[14]) + (UINT4)(0xfde5380c); (b) = ((((b)) << ((23))) | (((b)) >> (32-((23))))) ; (b) += (c); } ;
md5c.c 235: { (a) += (((b)) ^ ((c)) ^ ((d))) + (x[ 1]) + (UINT4)(0xa4beea44); (a) = ((((a)) << ((4))) | (((a)) >> (32-((4))))) ; (a) += (b); } ;
md5c.c 236: { (d) += (((a)) ^ ((b)) ^ ((c))) + (x[ 4]) + (UINT4)(0x4bdecfa9); (d) = ((((d)) << ((11))) | (((d)) >> (32-((11))))) ; (d) += (a); } ;
md5c.c 237: { (c) += (((d)) ^ ((a)) ^ ((b))) + (x[ 7]) + (UINT4)(0xf6bb4b60); (c) = ((((c)) << ((16))) | (((c)) >> (32-((16))))) ; (c) += (d); } ;
md5c.c 238: { (b) += (((c)) ^ ((d)) ^ ((a))) + (x[10]) + (UINT4)(0xbebfbc70); (b) = ((((b)) << ((23))) | (((b)) >> (32-((23))))) ; (b) += (c); } ;
md5c.c 239: { (a) += (((b)) ^ ((c)) ^ ((d))) + (x[13]) + (UINT4)(0x289b7ec6); (a) = ((((a)) << ((4))) | (((a)) >> (32-((4))))) ; (a) += (b); } ;
md5c.c 240: { (d) += (((a)) ^ ((b)) ^ ((c))) + (x[ 0]) + (UINT4)(0xeaa127fa); (d) = ((((d)) << ((11))) | (((d)) >> (32-((11))))) ; (d) += (a); } ;
md5c.c 241: { (c) += (((d)) ^ ((a)) ^ ((b))) + (x[ 3]) + (UINT4)(0xd4ef3085); (c) = ((((c)) << ((16))) | (((c)) >> (32-((16))))) ; (c) += (d); } ;
md5c.c 242: { (b) += (((c)) ^ ((d)) ^ ((a))) + (x[ 6]) + (UINT4)(0x4881d05); (b) = ((((b)) << ((23))) | (((b)) >> (32-((23))))) ; (b) += (c); } ;
md5c.c 243: { (a) += (((b)) ^ ((c)) ^ ((d))) + (x[ 9]) + (UINT4)(0xd9d4d039); (a) = ((((a)) << ((4))) | (((a)) >> (32-((4))))) ; (a) += (b); } ;
md5c.c 244: { (d) += (((a)) ^ ((b)) ^ ((c))) + (x[12]) + (UINT4)(0xe6db99e5); (d) = ((((d)) << ((11))) | (((d)) >> (32-((11))))) ; (d) += (a); } ;
md5c.c 245: { (c) += (((d)) ^ ((a)) ^ ((b))) + (x[15]) + (UINT4)(0x1fa27cf8); (c) = ((((c)) << ((16))) | (((c)) >> (32-((16))))) ; (c) += (d); } ;
md5c.c 246: { (b) += (((c)) ^ ((d)) ^ ((a))) + (x[ 2]) + (UINT4)(0xc4ac5665); (b) = ((((b)) << ((23))) | (((b)) >> (32-((23))))) ; (b) += (c); } ;
md5c.c 247:
md5c.c 248:
md5c.c 249: { (a) += (((c)) ^ (((b)) | (~(d)))) + (x[ 0]) + (UINT4)(0xf4292244); (a) = ((((a)) << ((6))) | (((a)) >> (32-((6))))) ; (a) += (b); } ;
md5c.c 250: { (d) += (((b)) ^ (((a)) | (~(c)))) + (x[ 7]) + (UINT4)(0x432aff97); (d) = ((((d)) << ((10))) | (((d)) >> (32-((10))))) ; (d) += (a); } ;
md5c.c 251: { (c) += (((a)) ^ (((d)) | (~(b)))) + (x[14]) + (UINT4)(0xab9423a7); (c) = ((((c)) << ((15))) | (((c)) >> (32-((15))))) ; (c) += (d); } ;
md5c.c 252: { (b) += (((d)) ^ (((c)) | (~(a)))) + (x[ 5]) + (UINT4)(0xfc93a039); (b) = ((((b)) << ((21))) | (((b)) >> (32-((21))))) ; (b) += (c); } ;
md5c.c 253: { (a) += (((c)) ^ (((b)) | (~(d)))) + (x[12]) + (UINT4)(0x655b59c3); (a) = ((((a)) << ((6))) | (((a)) >> (32-((6))))) ; (a) += (b); } ;
md5c.c 254: { (d) += (((b)) ^ (((a)) | (~(c)))) + (x[ 3]) + (UINT4)(0x8f0ccc92); (d) = ((((d)) << ((10))) | (((d)) >> (32-((10))))) ; (d) += (a); } ;
md5c.c 255: { (c) += (((a)) ^ (((d)) | (~(b)))) + (x[10]) + (UINT4)(0xffeff47d); (c) = ((((c)) << ((15))) | (((c)) >> (32-((15))))) ; (c) += (d); } ;
md5c.c 256: { (b) += (((d)) ^ (((c)) | (~(a)))) + (x[ 1]) + (UINT4)(0x85845dd1); (b) = ((((b)) << ((21))) | (((b)) >> (32-((21))))) ; (b) += (c); } ;
md5c.c 257: { (a) += (((c)) ^ (((b)) | (~(d)))) + (x[ 8]) + (UINT4)(0x6fa87e4f); (a) = ((((a)) << ((6))) | (((a)) >> (32-((6))))) ; (a) += (b); } ;
md5c.c 258: { (d) += (((b)) ^ (((a)) | (~(c)))) + (x[15]) + (UINT4)(0xfe2ce6e0); (d) = ((((d)) << ((10))) | (((d)) >> (32-((10))))) ; (d) += (a); } ;
md5c.c 259: { (c) += (((a)) ^ (((d)) | (~(b)))) + (x[ 6]) + (UINT4)(0xa3014314); (c) = ((((c)) << ((15))) | (((c)) >> (32-((15))))) ; (c) += (d); } ;
md5c.c 260: { (b) += (((d)) ^ (((c)) | (~(a)))) + (x[13]) + (UINT4)(0x4e0811a1); (b) = ((((b)) << ((21))) | (((b)) >> (32-((21))))) ; (b) += (c); } ;
md5c.c 261: { (a) += (((c)) ^ (((b)) | (~(d)))) + (x[ 4]) + (UINT4)(0xf7537e82); (a) = ((((a)) << ((6))) | (((a)) >> (32-((6))))) ; (a) += (b); } ;
md5c.c 262: { (d) += (((b)) ^ (((a)) | (~(c)))) + (x[11]) + (UINT4)(0xbd3af235); (d) = ((((d)) << ((10))) | (((d)) >> (32-((10))))) ; (d) += (a); } ;
md5c.c 263: { (c) += (((a)) ^ (((d)) | (~(b)))) + (x[ 2]) + (UINT4)(0x2ad7d2bb); (c) = ((((c)) << ((15))) | (((c)) >> (32-((15))))) ; (c) += (d); } ;
md5c.c 264: { (b) += (((d)) ^ (((c)) | (~(a)))) + (x[ 9]) + (UINT4)(0xeb86d391); (b) = ((((b)) << ((21))) | (((b)) >> (32-((21))))) ; (b) += (c); } ;
md5c.c 265:
md5c.c 266: state[0] += a;
md5c.c 267: state[1] += b;
md5c.c 268: state[2] += c;
md5c.c 269: state[3] += d;
md5c.c 270:
md5c.c 271:
md5c.c 272:
md5c.c 273: MD5_memset ((POINTER)x, 0, sizeof (x));
md5c.c 274: }
md5c.c 275:
md5c.c 276:
md5c.c 277:
md5c.c 278:
md5c.c 279: static void Encode (output, input, len)
md5c.c 280: unsigned char *output;
md5c.c 281: UINT4 *input;
md5c.c 282: unsigned int len;
md5c.c 283: {
md5c.c 284: unsigned int i, j;
md5c.c 285:
md5c.c 286: for (i = 0, j = 0; j < len; i++, j += 4) {
md5c.c 287: output[j] = (unsigned char)(input[i] & 0xff);
md5c.c 288: output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
md5c.c 289: output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
md5c.c 290: output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
md5c.c 291: }
md5c.c 292: }
md5c.c 293:
md5c.c 294:
md5c.c 295:
md5c.c 296:
md5c.c 297: static void Decode (output, input, len)
md5c.c 298: UINT4 *output;
md5c.c 299: unsigned char *input;
md5c.c 300: unsigned int len;
md5c.c 301: {
md5c.c 302: unsigned int i, j;
md5c.c 303:
md5c.c 304: for (i = 0, j = 0; j < len; i++, j += 4)
md5c.c 305: output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
md5c.c 306: (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
md5c.c 307: }
md5c.c 308:
md5c.c 309:
md5c.c 310:
md5c.c 311:
md5c.c 312: static void MD5_memcpy (output, input, len)
md5c.c 313: POINTER output;
md5c.c 314: POINTER input;
md5c.c 315: unsigned int len;
md5c.c 316: {
md5c.c 317: unsigned int i;
md5c.c 318:
md5c.c 319: for (i = 0; i < len; i++)
md5c.c 320: output[i] = input[i];
md5c.c 321: }
md5c.c 322:
md5c.c 323:
md5c.c 324:
md5c.c 325: static void MD5_memset (output, value, len)
md5c.c 326: POINTER output;
md5c.c 327: int value;
md5c.c 328: unsigned int len;
md5c.c 329: {
md5c.c 330: unsigned int i;
md5c.c 331:
md5c.c 332: for (i = 0; i < len; i++)
md5c.c 333: ((char *)output)[i] = (char)value;
md5c.c 334: }
md5c.c 335:
md5c.c 336:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -