私のプログラムには 2 つの uint8_t ポインターがあり、それらの値を比較したいと考えています。unsigned int を扱うのは良い考えではありません。これが私のコードです
static void bacast_signed_message()
{
uint8_t *M = malloc(MAX_M_LEN*sizeof(uint8_t));//uint8_t M[MAX_M_LEN];//uint8_t *M;
int M_len = MAX_M_LEN;;
uint8_t *C = malloc((2*KEYDIGITS*NN_DIGIT_LEN + 1 + MAX_M_LEN + HMAC_LEN)*sizeof(uint8_t));
int C_len;
//uint8_t C[2*KEYDIGITS*NN_DIGIT_LEN + 1 + MAX_M_LEN + HMAC_LEN];
uint8_t *dM = malloc(MAX_M_LEN*sizeof(uint8_t)); //uint8_t dM[MAX_M_LEN];
int dM_len = MAX_M_LEN;
random_data(M, MAX_M_LEN);
printf("C before encrypt %p\n",*C);
printf("M before encrypt %p\n",*M);
printf("dM before encrypt %p\n",*dM);
C_len = encrypt(C, (2*KEYDIGITS*NN_DIGIT_LEN + 1 + M_len + HMAC_LEN), M, M_len, &pbkey_alice);
//encrypt(uint8_t *C, int C_len, uint8_t *M, int M_len, Point *PublicKey);
printf("C after encrypt %p\n",*C);
printf("M after encrypt %p\n",*M);
printf("dM after encrypt %p\n",*dM);
dM_len = decrypt(dM, dM_len, C, C_len, prKey_alice);
//decrypt(uint8_t *M, int M_len, uint8_t *C, int C_len, NN_DIGIT *d);
printf("C after decrypt %p\n",*C);
printf("M after decrypt %p\n",*M);
printf("dM after decrypt %p\n",*dM);
printf("C_len = %i , M_len = %i\n",C_len,M_len);
if (dM == M){printf("Works\n");}
else{printf("Not Works\n");}
}
そして、これは私が得たアウトプットです
C before encrypt 0x40
M before encrypt 0x28
dM before encrypt 0x70
C after encrypt 0x4
M after encrypt 0x28
dM after encrypt 0x70
C after decrypt 0x4
M after decrypt 0x28
dM after decrypt 0x28
C_len = 102 , M_len = 41
Not Works
そして、private_keyを変更した場合(公開鍵の変更なし)、次のようになります
C before encrypt 0x40
M before encrypt 0x28
dM before encrypt 0x70
C after encrypt 0x4
M after encrypt 0x28
dM after encrypt 0x70
C after decrypt 0x4
M after decrypt 0x28
dM after decrypt 0x70
C_len = 102 , M_len = 41
Not Works
つまり、dM は変更されていません。しかし、これについてはよくわかりません。%p の代わりに %u を使用すると、まったく異なる答えが得られます (%u を使用すると、10 進数に変換されると表示されます)。アドバイスをお願いします。これのどこが悪いのか教えてください。
前もって感謝します