将AES加密的十六进制字符串转换回C ++中的字符串

时间:2013-04-15 15:54:04

标签: c++ c character aes printf

在C ++中,我有一个AES加密的char *,在将其作为URL参数just as it is done in this question发送之前,我将其转换为其HEX表示形式。现在,我想做相反的事情,即将这样的十六进制转换回char *。但是我在这里感到困惑 - 使用带有%x或%s的sprintf将导致完全不同的值。我怎么能再把它转换回去?谢谢......

1 个答案:

答案 0 :(得分:2)

您可以像这样使用sscanf()

#define LEN  16 /* 128/8 */

void aes_to_char(char *aes, char *res)
{
  int i;
  for (i = 0; i < LEN; i++) {
    sscanf(aes, "%2hhx", &res[i]);
    aes += 2;
  }
}

"%2hhx"表示“2个字符十六进制值,存储在char *中。