将十六进制形式的文本转换为 C 中的字符
Convert text in hex form to characters in C
我正在尝试解密 C 中的密文。密文似乎是符号和不可读字符的形式,我无法从文件中正确读取存储在其中的密文,因此解密失败.所以我尝试了一种不同的方法,通过以下方式以十六进制形式存储密文:
sprintf(file,"%02x",ciphertxt(//symbols));
现在我可以读取十六进制形式的完整密文了。但是为了解密它,我只需要将它以纯符号形式传递给 openssl 解密函数。如何将十六进制形式改回原始符号字符形式?
尝试这样的事情:
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;
我正在尝试解密 C 中的密文。密文似乎是符号和不可读字符的形式,我无法从文件中正确读取存储在其中的密文,因此解密失败.所以我尝试了一种不同的方法,通过以下方式以十六进制形式存储密文:
sprintf(file,"%02x",ciphertxt(//symbols));
现在我可以读取十六进制形式的完整密文了。但是为了解密它,我只需要将它以纯符号形式传递给 openssl 解密函数。如何将十六进制形式改回原始符号字符形式?
尝试这样的事情:
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;