【问题标题】:Sending rsa keys over tcp通过 tcp 发送 rsa 密钥
【发布时间】:2012-04-23 05:34:05
【问题描述】:

我正在尝试以这种方式通过 tcp 连接发送 rsa 密钥 (RSA *myrsa):

send(client, (char *)myrsa, sizeof(RSA), 0);

而收件人:

read_bytes = tcpSocket.read(buffer, sizeof(RSA));
RSA *myrsa = RSA_new();
memcpy((void*)myrsa, (void*)buffer, read_bytes);

然后 RSA_check_key(rsa) 返回 -1 或使程序崩溃。 我做错了什么?也许它存在更合适的解决方案?也许行消息被任何转换破坏了?

【问题讨论】:

  • 1) 为什么要明文发送加密材料? 2) read_bytes 是预期值吗?
  • @zmccord:公钥加密的全部意义(或者说最重要的一点)是它允许您在不影响安全性的情况下以明文形式发送密钥。
  • @zmccord:是的,read_bytes 应该是 168 字节;

标签: c++ qt sockets openssl rsa


【解决方案1】:

-1 表示数据中有错误。 RSA_check_keys 方法仅验证参数是否一致,而不是数据一定有效。 崩溃之类的行为也可能与错误数据一致。

可能存在问题的几个地方: 你真的为缓冲区分配空间吗? 您是否检查 read_bytes 的长度以确保您收到的数据可能是 RSA 密钥?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2011-12-06
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2018-06-28
    相关资源
    最近更新 更多