我想打印以下散列数据。我该怎么办?

unsigned char hashedChars[32];
SHA256((const unsigned char*)data.c_str(),
       data.length(),
       hashedChars);
printf("hashedChars: %X\n", hashedChars);  // doesn't seem to work??

最佳答案

十六进制格式说明符期望单个整数值,但您提供的是char数组。您需要做的是将char值分别打印为十六进制值。

printf("hashedChars: ");
for (int i = 0; i < 32; i++) {
  printf("%x", hashedChars[i]);
}
printf("\n");

由于您使用的是C++,但是您应该考虑使用cout而不是printf(对于C++来说,这更常见。
cout << "hashedChars: ";
for (int i = 0; i < 32; i++) {
  cout << hex << hashedChars[i];
}
cout << endl;

07-25 23:58