2012-04-23 3 views
0

上でRSA鍵を送信:私は、TCP接続などの方法を介してRSA鍵(RSA *のmyrsa)を送信しようとしている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

+0

@zmccord:公開鍵暗号のポイント(とにかく、ほとんどの点)は、セキュリティを損なうことなくクリアな鍵を送ることができるということです。 –

+0

@zmccord:はい、read_bytesは168バイトと予想されます。 – user1261347

答えて

0

-1は、データにエラーがあることを示します。 RSA_check_keysメソッドは、データが必ずしも有効ではなく、パラメータが一貫していることを確認するだけです。 クラッシュのような動作も、不正なデータと一致する可能性があります。

問題が発生する可能性があるいくつかの場所: 実際にバッファーを確保するスペースはありますか? read_bytesの長さをチェックして、受信したデータがRSA鍵である可能性が高いかどうかを確認しますか?

関連する問題