2012-04-23 65 views
0

我试图通过TCP连接这样的方式发送RSA密钥(RSA * myrsa)发送的RSA密钥:通过TCP

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或崩溃程序。 我做错了什么?也许它存在更合适的解决方案?也许行消息由任何转换损坏?

+0

1)你为什么要传送密码材料? 2)是read_bytes预期值吗? – zmccord 2012-04-23 05:36:51

+0

@zmccord:公钥密码学的重点(或者大部分观点)是它允许你在明文中发送密钥而不会影响安全性。 – 2012-04-23 05:37:59

+0

@zmccord:是的,read_bytes预计为168字节; – user1261347 2012-04-23 17:19:02

回答

0

-1意味着数据中有错误。 RSA_check_keys方法仅验证参数是否一致,而不是数据必须有效。 崩溃等行为也可能与错误的数据一致。

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