【发布时间】:2010-06-02 11:41:33
【问题描述】:
我正在尝试使用 md5 代码来计算文件的校验和。现在给定的函数在屏幕上打印出(先前计算的)校验和,但我想将它存储在一个变量中,以便稍后进行比较。
我想主要问题是我想将数组的内容存储在一个变量中。 我该如何管理? 可能这是一个非常愚蠢的问题,但也许有人可以提供帮助。
下面是打印值的函数。我想修改它以将结果存储在一个变量中。
static void MDPrint (MD5_CTX* mdContext)
{
int i;
for (i = 0; i < 16; i++)
{
printf ("%02x", mdContext->digest[i]);
} // end of for
} // end of function
出于完整性的原因,使用的结构:
/* typedef a 32 bit type */
typedef unsigned long int UINT4;
/* Data structure for MD5 (Message Digest) computation */
typedef struct {
UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
UINT4 buf[4]; /* scratch buffer */
unsigned char in[64]; /* input buffer */
unsigned char digest[16]; /* actual digest after MD5Final call */
} MD5_CTX;
以及用于计算校验和的函数:
static int MDFile (char* filename)
{
FILE *inFile = fopen (filename, "rb");
MD5_CTX mdContext;
int bytes;
unsigned char data[1024];
if (inFile == NULL) {
printf ("%s can't be opened.\n", filename);
return -1;
} // end of if
MD5Init (&mdContext);
while ((bytes = fread (data, 1, 1024, inFile)) != 0)
MD5Update (&mdContext, data, bytes);
MD5Final (&mdContext);
MDPrint (&mdContext);
printf (" %s\n", filename);
fclose (inFile);
return 0;
}
【问题讨论】: