我是c新手,我知道我做错了什么,但真的可以在这里使用一些帮助。向字符串捕获值的问题
我正在尝试采取一个字符串,并得到它的MD5校验和散列。我有很好的计算MD5的工作代码(下图)。他们工作得很好,我对他们没有任何问题。我的问题是将这个函数的输出捕获到一个字符串中。我知道这很简单,但我不知道我搞砸了:
// MD5 Hash query_string for return checksum
int i;
unsigned char result[MD5_DIGEST_LENGTH];
unsigned char returnCheck;
MD5(query_string, strlen(query_string), result);
// output
for(i = 0; i < MD5_DIGEST_LENGTH; i++)
{
printf("MD return = %02x\n", result[i]);
returnCheck += result[i];
printf("returnCheck = %02x\n",returnCheck);
}
正如你可以看到,我试图把结果输出[i]和它连接成一个字符串(returnCheck) 。问题是我没有得到正确的值到returnCheck。请参见下面的输出:
MD return = 6b
returnCheck = 6b
MD return = 84
returnCheck = ef
MD return = 12
returnCheck = 01
MD return = a6
returnCheck = a7
MD return = a9
returnCheck = 50
MD return = 96
returnCheck = e6
MD return = 98
returnCheck = 7e
MD return = 52
returnCheck = d0
MD return = 3b
returnCheck = 0b
MD return = d6
returnCheck = e1
MD return = 32
returnCheck = 13
MD return = 77
returnCheck = 8a
MD return = 0c
returnCheck = 96
MD return = b4
returnCheck = 4a
MD return = 3d
returnCheck = 87
MD return = 4f
returnCheck = d6
的MD5我应该在这个例子中得到的是“6b8412a6a99698523bd632770cb43d4f”其中MD回报显示正确,但不returnCheck。目标是在这个函数的最后有一个名为'returnCheck'的字符串,值为'6b8412a6a99698523bd632770cb43d4f'。
请帮忙!
- 我还试图 -
// MD5 Hash query_string for return checksum
int i;
unsigned char result[MD5_DIGEST_LENGTH];
char returnCheck[32] = "";
MD5(query_string, strlen(query_string), result);
// output
for(i = 0; i < MD5_DIGEST_LENGTH; i++)
{
printf("MD return = %02x\n", result[i]);
returnCheck[i] = result[i];
printf("returnCheck = %x\n",returnCheck);
}
'returnCheck'是一个单独的字符,而不是一个字符串。 '+ ='操作不是串联;它是算术。所以,你需要一个字符数组,你需要担心空终止。 –
@JonathanLeffler我试过了(请参阅上面的代码更改)仍然不起作用?我在搞什么? –
@StevenCarlson在您编辑的版本中,当您打印出'returnCheck'的值时,您没有使用索引'[i]'。 –