⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ripemd.c

📁 python的加密库
💻 C
📖 第 1 页 / 共 2 页
字号:
	word aaa = aa, bbb = bb, ccc = cc, ddd = dd, eee = ee;	/*{printf("\nWords: ");	  for(i=0; i<16; i++) printf("%x ", X[i]);	  printf("\n");}	  printf("before compress: %x %x %x %x %x\n",	  aa, bb, cc, dd, ee);*/	/* round 1 */	FF1(aa, bb, cc, dd, ee, X[ 0], 11);	FF1(ee, aa, bb, cc, dd, X[ 1], 14);	FF1(dd, ee, aa, bb, cc, X[ 2], 15);	FF1(cc, dd, ee, aa, bb, X[ 3], 12);	FF1(bb, cc, dd, ee, aa, X[ 4],  5);	FF1(aa, bb, cc, dd, ee, X[ 5],  8);	FF1(ee, aa, bb, cc, dd, X[ 6],  7);	FF1(dd, ee, aa, bb, cc, X[ 7],  9);	FF1(cc, dd, ee, aa, bb, X[ 8], 11);	FF1(bb, cc, dd, ee, aa, X[ 9], 13);	FF1(aa, bb, cc, dd, ee, X[10], 14);	FF1(ee, aa, bb, cc, dd, X[11], 15);	FF1(dd, ee, aa, bb, cc, X[12],  6);	FF1(cc, dd, ee, aa, bb, X[13],  7);	FF1(bb, cc, dd, ee, aa, X[14],  9);	FF1(aa, bb, cc, dd, ee, X[15],  8);	/* round 2 */	FF2(ee, aa, bb, cc, dd, X[ 7],  7);	FF2(dd, ee, aa, bb, cc, X[ 4],  6);	FF2(cc, dd, ee, aa, bb, X[13],  8);	FF2(bb, cc, dd, ee, aa, X[ 1], 13);	FF2(aa, bb, cc, dd, ee, X[10], 11);	FF2(ee, aa, bb, cc, dd, X[ 6],  9);	FF2(dd, ee, aa, bb, cc, X[15],  7);	FF2(cc, dd, ee, aa, bb, X[ 3], 15);	FF2(bb, cc, dd, ee, aa, X[12],  7);	FF2(aa, bb, cc, dd, ee, X[ 0], 12);	FF2(ee, aa, bb, cc, dd, X[ 9], 15);	FF2(dd, ee, aa, bb, cc, X[ 5],  9);	FF2(cc, dd, ee, aa, bb, X[ 2], 11);	FF2(bb, cc, dd, ee, aa, X[14],  7);	FF2(aa, bb, cc, dd, ee, X[11], 13);	FF2(ee, aa, bb, cc, dd, X[ 8], 12);	/* round 3 */	FF3(dd, ee, aa, bb, cc, X[ 3], 11);	FF3(cc, dd, ee, aa, bb, X[10], 13);	FF3(bb, cc, dd, ee, aa, X[14],  6);	FF3(aa, bb, cc, dd, ee, X[ 4],  7);	FF3(ee, aa, bb, cc, dd, X[ 9], 14);	FF3(dd, ee, aa, bb, cc, X[15],  9);	FF3(cc, dd, ee, aa, bb, X[ 8], 13);	FF3(bb, cc, dd, ee, aa, X[ 1], 15);	FF3(aa, bb, cc, dd, ee, X[ 2], 14);	FF3(ee, aa, bb, cc, dd, X[ 7],  8);	FF3(dd, ee, aa, bb, cc, X[ 0], 13);	FF3(cc, dd, ee, aa, bb, X[ 6],  6);	FF3(bb, cc, dd, ee, aa, X[13],  5);	FF3(aa, bb, cc, dd, ee, X[11], 12);	FF3(ee, aa, bb, cc, dd, X[ 5],  7);	FF3(dd, ee, aa, bb, cc, X[12],  5);	/* round 4 */	FF4(cc, dd, ee, aa, bb, X[ 1], 11);	FF4(bb, cc, dd, ee, aa, X[ 9], 12);	FF4(aa, bb, cc, dd, ee, X[11], 14);	FF4(ee, aa, bb, cc, dd, X[10], 15);	FF4(dd, ee, aa, bb, cc, X[ 0], 14);	FF4(cc, dd, ee, aa, bb, X[ 8], 15);	FF4(bb, cc, dd, ee, aa, X[12],  9);	FF4(aa, bb, cc, dd, ee, X[ 4],  8);	FF4(ee, aa, bb, cc, dd, X[13],  9);	FF4(dd, ee, aa, bb, cc, X[ 3], 14);	FF4(cc, dd, ee, aa, bb, X[ 7],  5);	FF4(bb, cc, dd, ee, aa, X[15],  6);	FF4(aa, bb, cc, dd, ee, X[14],  8);	FF4(ee, aa, bb, cc, dd, X[ 5],  6);	FF4(dd, ee, aa, bb, cc, X[ 6],  5);	FF4(cc, dd, ee, aa, bb, X[ 2], 12);	/* round 5 */	FF5(bb, cc, dd, ee, aa, X[ 4],  9);	FF5(aa, bb, cc, dd, ee, X[ 0], 15);	FF5(ee, aa, bb, cc, dd, X[ 5],  5);	FF5(dd, ee, aa, bb, cc, X[ 9], 11);	FF5(cc, dd, ee, aa, bb, X[ 7],  6);	FF5(bb, cc, dd, ee, aa, X[12],  8);	FF5(aa, bb, cc, dd, ee, X[ 2], 13);	FF5(ee, aa, bb, cc, dd, X[10], 12);	FF5(dd, ee, aa, bb, cc, X[14],  5);	FF5(cc, dd, ee, aa, bb, X[ 1], 12);	FF5(bb, cc, dd, ee, aa, X[ 3], 13);	FF5(aa, bb, cc, dd, ee, X[ 8], 14);	FF5(ee, aa, bb, cc, dd, X[11], 11);	FF5(dd, ee, aa, bb, cc, X[ 6],  8);	FF5(cc, dd, ee, aa, bb, X[15],  5);	FF5(bb, cc, dd, ee, aa, X[13],  6);	/* parallel round 1 */	FFF5(aaa, bbb, ccc, ddd, eee, X[ 5],  8);	FFF5(eee, aaa, bbb, ccc, ddd, X[14],  9);	FFF5(ddd, eee, aaa, bbb, ccc, X[ 7],  9);	FFF5(ccc, ddd, eee, aaa, bbb, X[ 0], 11);	FFF5(bbb, ccc, ddd, eee, aaa, X[ 9], 13);	FFF5(aaa, bbb, ccc, ddd, eee, X[ 2], 15);	FFF5(eee, aaa, bbb, ccc, ddd, X[11], 15);	FFF5(ddd, eee, aaa, bbb, ccc, X[ 4],  5);	FFF5(ccc, ddd, eee, aaa, bbb, X[13],  7);	FFF5(bbb, ccc, ddd, eee, aaa, X[ 6],  7);	FFF5(aaa, bbb, ccc, ddd, eee, X[15],  8);	FFF5(eee, aaa, bbb, ccc, ddd, X[ 8], 11);	FFF5(ddd, eee, aaa, bbb, ccc, X[ 1], 14);	FFF5(ccc, ddd, eee, aaa, bbb, X[10], 14);	FFF5(bbb, ccc, ddd, eee, aaa, X[ 3], 12);	FFF5(aaa, bbb, ccc, ddd, eee, X[12],  6);	/* parallel round 2 */	FFF4(eee, aaa, bbb, ccc, ddd, X[ 6],  9);	FFF4(ddd, eee, aaa, bbb, ccc, X[11], 13);	FFF4(ccc, ddd, eee, aaa, bbb, X[ 3], 15);	FFF4(bbb, ccc, ddd, eee, aaa, X[ 7],  7);	FFF4(aaa, bbb, ccc, ddd, eee, X[ 0], 12);	FFF4(eee, aaa, bbb, ccc, ddd, X[13],  8);	FFF4(ddd, eee, aaa, bbb, ccc, X[ 5],  9);	FFF4(ccc, ddd, eee, aaa, bbb, X[10], 11);	FFF4(bbb, ccc, ddd, eee, aaa, X[14],  7);	FFF4(aaa, bbb, ccc, ddd, eee, X[15],  7);	FFF4(eee, aaa, bbb, ccc, ddd, X[ 8], 12);	FFF4(ddd, eee, aaa, bbb, ccc, X[12],  7);	FFF4(ccc, ddd, eee, aaa, bbb, X[ 4],  6);	FFF4(bbb, ccc, ddd, eee, aaa, X[ 9], 15);	FFF4(aaa, bbb, ccc, ddd, eee, X[ 1], 13);	FFF4(eee, aaa, bbb, ccc, ddd, X[ 2], 11);	/* parallel round 3 */	FFF3(ddd, eee, aaa, bbb, ccc, X[15],  9);	FFF3(ccc, ddd, eee, aaa, bbb, X[ 5],  7);	FFF3(bbb, ccc, ddd, eee, aaa, X[ 1], 15);	FFF3(aaa, bbb, ccc, ddd, eee, X[ 3], 11);	FFF3(eee, aaa, bbb, ccc, ddd, X[ 7],  8);	FFF3(ddd, eee, aaa, bbb, ccc, X[14],  6);	FFF3(ccc, ddd, eee, aaa, bbb, X[ 6],  6);	FFF3(bbb, ccc, ddd, eee, aaa, X[ 9], 14);	FFF3(aaa, bbb, ccc, ddd, eee, X[11], 12);	FFF3(eee, aaa, bbb, ccc, ddd, X[ 8], 13);	FFF3(ddd, eee, aaa, bbb, ccc, X[12],  5);	FFF3(ccc, ddd, eee, aaa, bbb, X[ 2], 14);	FFF3(bbb, ccc, ddd, eee, aaa, X[10], 13);	FFF3(aaa, bbb, ccc, ddd, eee, X[ 0], 13);	FFF3(eee, aaa, bbb, ccc, ddd, X[ 4],  7);	FFF3(ddd, eee, aaa, bbb, ccc, X[13],  5);	/* parallel round 4 */	FFF2(ccc, ddd, eee, aaa, bbb, X[ 8], 15);	FFF2(bbb, ccc, ddd, eee, aaa, X[ 6],  5);	FFF2(aaa, bbb, ccc, ddd, eee, X[ 4],  8);	FFF2(eee, aaa, bbb, ccc, ddd, X[ 1], 11);	FFF2(ddd, eee, aaa, bbb, ccc, X[ 3], 14);	FFF2(ccc, ddd, eee, aaa, bbb, X[11], 14);	FFF2(bbb, ccc, ddd, eee, aaa, X[15],  6);	FFF2(aaa, bbb, ccc, ddd, eee, X[ 0], 14);	FFF2(eee, aaa, bbb, ccc, ddd, X[ 5],  6);	FFF2(ddd, eee, aaa, bbb, ccc, X[12],  9);	FFF2(ccc, ddd, eee, aaa, bbb, X[ 2], 12);	FFF2(bbb, ccc, ddd, eee, aaa, X[13],  9);	FFF2(aaa, bbb, ccc, ddd, eee, X[ 9], 12);	FFF2(eee, aaa, bbb, ccc, ddd, X[ 7],  5);	FFF2(ddd, eee, aaa, bbb, ccc, X[10], 15);	FFF2(ccc, ddd, eee, aaa, bbb, X[14],  8);	/* parallel round 5 */	FFF1(bbb, ccc, ddd, eee, aaa, X[12] ,  8);	FFF1(aaa, bbb, ccc, ddd, eee, X[15] ,  5);	FFF1(eee, aaa, bbb, ccc, ddd, X[10] , 12);	FFF1(ddd, eee, aaa, bbb, ccc, X[ 4] ,  9);	FFF1(ccc, ddd, eee, aaa, bbb, X[ 1] , 12);	FFF1(bbb, ccc, ddd, eee, aaa, X[ 5] ,  5);	FFF1(aaa, bbb, ccc, ddd, eee, X[ 8] , 14);	FFF1(eee, aaa, bbb, ccc, ddd, X[ 7] ,  6);	FFF1(ddd, eee, aaa, bbb, ccc, X[ 6] ,  8);	FFF1(ccc, ddd, eee, aaa, bbb, X[ 2] , 13);	FFF1(bbb, ccc, ddd, eee, aaa, X[13] ,  6);	FFF1(aaa, bbb, ccc, ddd, eee, X[14] ,  5);	FFF1(eee, aaa, bbb, ccc, ddd, X[ 0] , 15);	FFF1(ddd, eee, aaa, bbb, ccc, X[ 3] , 13);	FFF1(ccc, ddd, eee, aaa, bbb, X[ 9] , 11);	FFF1(bbb, ccc, ddd, eee, aaa, X[11] , 11);	/* combine results into new state */	ddd += cc + MDbuf[1];	MDbuf[1] = MDbuf[2] + dd + eee;	MDbuf[2] = MDbuf[3] + ee + aaa;	MDbuf[3] = MDbuf[4] + aa + bbb;	MDbuf[4] = MDbuf[0] + bb + ccc;	MDbuf[0] = ddd;	/*printf("after compress: %x %x %x %x %x\n",	  MDbuf[0], MDbuf[1], MDbuf[2], MDbuf[3], MDbuf[4]);*/}/********************************************************************/static void MDfinish( hash_state *shsInfo)/* The final value of the 5-word MDbuf array is calculated.    lswlen and mswlen contain, respectively, the least and most significant   32 bits of the message bit length mod 2^64, and string is an incomplete   block containing the (lswlen mod 512) remaining message bits.   (In case the message is already a multiple of 512 bits, string   is not used.) The conversion of the 5-word final state MDbuf to   the 20-byte hash result using a Little-endian convention is the   responsibility of the calling function.*/{	word *MDbuf = shsInfo->digest;	byte *string = (byte *)shsInfo->data;	word lswlen = shsInfo->countLo ;	word mswlen = shsInfo->countHi ;/*   word lswlen = shsInfo->countLo << 3;*//*   word mswlen = (shsInfo->countLo >>29)|(shsInfo->countHi <<3);*/	size_t i, length;	byte   mask;	word   X[16];	/* clear 16-word message block */	memset(X, 0, 16*sizeof(word));	/* copy (lswlen mod 512) bits from string into X */	length = ((lswlen&511)+7)/8; /* number of bytes */	mask = (lswlen&7) ? ((byte)1 << (lswlen&7)) - 1 : 0xff;	for (i=0; i<length; i++) {		/* byte i goes into word X[i div 4] at bit position 8*(i mod 4) */		if (i == length-1)			X[i>>2] ^= (word) (*string&mask) << (8*(i&3));		else			X[i>>2] ^= (word) *string++ << (8*(i&3));	}	/* append a single 1 */	X[(lswlen>>5)&15] ^= (word)1 << (8*((lswlen>>3)&3)+7-(lswlen&7));	if ((lswlen & 511) > 447) {		/* length doesn't fit in this block anymore.		   Compress, and put length in the next block */		MDcompress(MDbuf, X);		memset(X, 0, 16*sizeof(word));	}	/* append length in bits*/	X[14] = lswlen;	X[15] = mswlen;	MDcompress(MDbuf, X);} 	#include "hash_template.c"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -