将十六进制形式的文本转换为C中的字符

时间:2015-04-18 14:35:06

标签: c encryption

我正在尝试解密C中的密文。密文似乎是符号和不可读字符的形式,我无法正确地从文件中读取存储在其中的密文,因此解密失败了。所以我尝试了一种不同的方法,我用十六进制的形式存储了密文:

sprintf(file,"%02x",ciphertxt(//symbols));

现在我能够以十六进制形式阅读完整的密文。但是为了解密它,我需要以纯粹的符号形式将它传递给openssl解密函数。如何将十六进制形式更改回原始符号字符形式?

1 个答案:

答案 0 :(得分:3)

尝试这样的事情:

unsigned char numbuf[3];
unsigned long i, j;
unsigned char outbuf[BUFFERSIZE]

numbuf[2] = 0; // terminate buffer
i = 0;
j = 0;
while(filebuf[i] && j < BUFFERSIZE - 1)
{
    numbuf[0] = filebuf[i];
    numbuf[1] = filebuf[i+1];
    outbuf[j++] = strtol(numbuf, NULL, 16);
    i+=2; // each value is two bytes long
}
outbuf[j] = 0;