クライアント/サーバー アプリケーションで openssl ライブラリを使用しており、クライアントと公開鍵を共有する必要があります。これはパケットの構造体です:
typedef struct pack {
char op[10];
char message[1024];
int id;
}packet;
そして、これは公開鍵を抽出してメッセージフィールドに入れる方法です:
packet *send_pack
RSA *rsa,
const unsigned char *my_public_key;
my_public_key = malloc(1024);
send_pack = (packet*) malloc(sizeof (packet));
rsa = RSA_new();
rsa = RSA_generate_key(1024, 17, NULL, NULL);
i2d_RSAPublicKey(rsa, &my_public_key);
printf("my public key: %X\n", (unsigned int)my_public_key);
strcpy(send_pack->message, my_public_key);
printf("field message of send pack %X", (unsigned int)send_pack->message );
...
ただし、2 つの printf は 2 つの類似した値を出力しますが、同じではありません (たとえば、最初の printf は A0B9092 を返し、2 番目の A0B944 を返します)。どうしたの ?