通过 tcp 发送 rsa 密钥

Sending rsa keys over tcp

本文关键字:密钥 rsa 发送 tcp 通过      更新时间:2023-10-16

我正在尝试以这种方式通过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 表示数据中存在错误。 RSA_check_keys方法仅验证参数是否一致,而不是数据是否一定有效。崩溃等行为也可能与不良数据一致。

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