我在程序中有兩個uint8_t指針,我想比較這些指針的值。我沒有好主意來處理未簽名的整數。這裏是我的代碼如何在c中比較兩個無符號整數(uint8_t)
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沒有改變。但我不確定這一點。如果我使用%u代替%p,它會給我完全不同的答案(它表示如果我們使用%u它將轉換爲十進制)。請給我一些建議,並告訴我這有什麼問題。
在此先感謝
這段代碼很痛苦。 – jungledev