c - 使用 openssl 在 stdout 上打印 RSA 加密文本

标签 c unix openssl rsa

我正在使用这部分代码

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/

相关文章:

matlab - 通过 Matab 系统连接 AWS 时遇到问题

c - 如何仅使用系统调用来倒回文件描述符?

apache - 无法让 SSL 在 Docker 容器中工作

将数字转换为二进制

c - 如何在 C 中的链表中实现数组

unix - 在 unix 中对多个文件运行脚本

linux - 如果在 Linux 中任何其他列中有零,如何将除第一列以外的整行设为零?

ruby-on-rails - CSR 失败 : Error Parsing Request ASN1 bad tag value met (ASN: 267 CRYPT_E_ASN1_BADTAG)

c - 如何使用 LLVMBuildStore API

c - C语言如何将浮点变量初始化为无穷大?