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

时间:2012-08-18 16:11:56

标签: 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 Ҩ xvU| > ˢ=W ő                                               \克

可以消除 符号??

1 个答案:

答案 0 :(得分:5)

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

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

有关在C中执行base64编码/解码的方法,请参阅this Stack Overflow question