Gcc 如何将加密的原始二进制数据转换为C语言中的十六进制字符串?

Gcc 如何将加密的原始二进制数据转换为C语言中的十六进制字符串?,gcc,encryption,hex,Gcc,Encryption,Hex,我正在使用C中的加密库(在Linux中使用gcc)加密字符串。下面是我要做的: ien = encrypt ((unsigned char*)passwd, strlen(passwd), (unsigned char*)cypher_key, (unsigned char*)cypher_salt, cypher_text); 现在如果我打印出cypher_文本的内容,它将是乱七八糟的。我需要将其保存到一个文本文件中(它将与其他内容一起散列,以便最终混淆)。现在这是一个实验。我需要将这个原

我正在使用C中的加密库(在Linux中使用gcc)加密字符串。下面是我要做的:

 ien = encrypt ((unsigned char*)passwd, strlen(passwd), (unsigned char*)cypher_key, (unsigned char*)cypher_salt, cypher_text);
现在如果我打印出cypher_文本的内容,它将是乱七八糟的。我需要将其保存到一个文本文件中(它将与其他内容一起散列,以便最终混淆)。现在这是一个实验。我需要将这个原始二进制数据转换成十六进制字符串,在任何文本编辑器中都是可读的

然后,我需要将十六进制字符串转换回原始二进制,以便我可以这样做并获得原始文本:

decrypt(cypher_text, ien, (unsigned char*)cypher_key, (unsigned char*)cypher_salt, (unsigned char*)passwd);
有人能为我指出正确的方向,告诉我如何才能做到这一点吗

更新关于在C中打印十六进制的建议链接并不是我想要的。我将直接获取加密函数输出的不可打印数据(不是数组中的十六进制值),并尝试将其转换为十六进制数字字符串,并能够将该十六进制字符串转换回其原始二进制形式。我希望这有助于澄清我正在努力做的一些事情


我将研究使用base64编码的想法,但我不能在编码中使用头等。我只需要一个直接的字符串。

通常您会使用类似于将二进制数据编码/解码为文本的东西-这非常简单,而且毫无疑问,为了避免“重新发明轮子”,您可以使用开源库。请参阅@ArtjomB。他们讨论的那个链接已经是十六进制了。我试图转换的是无法打印的内容。@RavenLX你说得对。事实证明,要找到一个通用的二进制
char[]
到十六进制
char[]
转换重复的目标问题有点困难。有没有办法删除我问题顶部的标题,上面写着“这个问题可能已经有答案了:在C7答案中打印十六进制字符”?这个链接并不能回答这个问题。