【问题标题】:print on stdout RSA encrypted text using openssl使用 openssl 在标准输出 RSA 加密文本上打印
【发布时间】:2012-08-18 16:11:56
【问题描述】:

我正在使用这部分代码

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

可以消除 � 符号??

【问题讨论】:

  • 密文并不意味着人类可读。甚至无法理解为像 UTF-8 这样的文本编码中的字符。当然,您可以消除未知字符符号。但要做到这一点,您首先必须决定:您想通过打印它来完成什么?
  • 我会打印它只是为了观察当我加密某些东西时会发生什么,一种视觉日志

标签: c unix openssl rsa


【解决方案1】:

字符串打印不好,因为它是二进制数据,而不是文本。它并不适合人类阅读。

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

请参阅this Stack Overflow question 了解在 C 中进行 base64 编码/解码的方法。

【讨论】:

    猜你喜欢
    • 2019-10-10
    • 2015-06-19
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    相关资源
    最近更新 更多