我正在尝试解密C中的密文。密文似乎是符号和不可读字符的形式,我无法正确地从文件中读取存储在其中的密文,因此解密失败了。所以我尝试了一种不同的方法,我用十六进制的形式存储了密文:
sprintf(file,"%02x",ciphertxt(//symbols));
现在我能够以十六进制形式阅读完整的密文。但是为了解密它,我需要以纯粹的符号形式将它传递给openssl解密函数。如何将十六进制形式更改回原始符号字符形式?
答案 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;