我正在使用这部分代码
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
可以消除 � 符号吗?
最佳答案
该字符串打印效果不佳,因为它是二进制数据,而不是文本。它并不意味着人类可读。
使二进制数据文本友好的常见方法是 base64 encode 它。 Base64 编码将二进制数据转换为 ASCII 字符字符串。编码后的文本仍然不是人类可读的,因此当您打印它时,它仍然看起来像官样文章,但它至少会易于阅读,易于粘贴到文本文件中,易于通过电子邮件发送。
参见this Stack Overflow question了解在 C 中进行 Base64 编码/解码的方法。
关于c - 使用 openssl 在 stdout 上打印 RSA 加密文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12020106/