-1

私は次のような方法で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を返すか、プログラムをクラッシュさせます。私は何を間違えますか?多分それはより適切な解決策が存在しますか?たぶん、行メッセージは変換によって破損しますか?

4

1 に答える 1

0

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

問題が発生する可能性のある場所がいくつかあります。実際にバッファ用のスペースを割り当てていますか?read_bytesの長さをチェックして、受信したデータがRSAキーである可能性が高いことを確認しますか?

于 2012-04-23T05:46:41.083 に答える