mask_gen_func.c

来自「ECC的C++源码」· C语言 代码 · 共 70 行

C
70
字号
/*  Create simple Mask Generation Function for IEEE P1363 standard  */#include <stdio.h>#include <stdlib.h>#include <string.h>extern void sha_memory();int MGF_Hash();/*  MGF-Hash	As described in section 13.2.1 of 21 Sept. 1997 P1363 draft.  	Assumes 32 bit inputs, no size error returned.	This version calls Jim Gilogly's implementation of SHA-1.		Input:			BYTE string Z of length zLen			pointer to output area (BYTE) mask			number of bytes desired in output oLen	Output:			mask filled with oLen bytes of garbage,			returns 0 for no error,			returns 1 if not enough memory available*/int MGF_Hash( Z, zLen, mask, oLen)unsigned char *Z, *mask;unsigned long zLen, oLen;{	unsigned char *catspace, *catpoint;	int           tbyte, counter;	unsigned long cThreshold = oLen/20;	unsigned long  *M, temp[5];		M = (unsigned long*) mask;/*  establish enough memory space to do the hashing with counter  */	catspace = malloc( zLen + 4);	if ( !catspace) return(1);	memcpy ( catspace, Z, zLen);	catpoint = catspace + zLen;/*  create main block of mask data  */	for ( counter = 0; counter < cThreshold; counter++)	{		*catpoint = (counter >> 24) & 0xFF;		*(catpoint+1) = (counter >> 16) & 0xFF;		*(catpoint+2) = (counter >> 8) & 0xFF;		*(catpoint+3) = counter & 0xFF;		sha_memory( catspace, zLen+4, M);		M += 5;	}/*  finish up any uneven multiples of a single hash step  */	if ( tbyte = oLen % 20)	{		*catpoint = (counter >> 24) & 0xFF;		*(catpoint+1) = (counter >> 16) & 0xFF;		*(catpoint+2) = (counter >> 8) & 0xFF;		*(catpoint+3) = counter & 0xFF;		sha_memory( catspace, zLen+4, temp);		memcpy( M, temp, tbyte);	}	free ( catspace);	return (0);}

⌨️ 快捷键说明

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