-1

我正在使用这部分代码

char encrypted_text[1024];
RSA_public_encrypt(sizeof(message), message, encrypted_text, rsa, RSA_PKCS1_OAEP_PADDING);
printf("encrypted text: %s\n", encrypted_text);

optput 是这样的:

�v0��뷾��s�E�Z��N\����6~��:�&���� /����~ͯ���L��d�Ǡ�� E��[�h�U.vH2F1Qb^)�g�,a�Ҩ�x vU|�>�ˢ=W�ő�� �\��g

可以消除�符号??

4

1 回答 1

5

该字符串打印不好,因为它是二进制数据,而不是文本。它并不意味着人类可读。

使二进制数据文本友好的一种常见方法是对其进行base64 编码。Base64 编码将二进制数据转换为一串 ASCII 字符。编码的文本仍然不是人类可读的,所以当你打印它时它仍然看起来像 gobbledygook,但它至少在视觉上很容易,很容易粘贴到文本文件中,很容易通过电子邮件发送。

有关在 C 中进行 base64 编码/解码的方法,请参阅此 Stack Overflow 问题。

于 2012-08-18T16:19:10.033 回答