我有這樣的代碼,使用PBC庫:元MUL在PBC圖書館
element_t pk, pk_temp;
element_init_G2(pk, pairing);
element_init_G2(pk_temp, pairing);
element_init_Zr(ci, pairing);
element_pow_zn(pk_temp, pk_temp, ci);
element_set1(pk);
element_add(pk, pk, pk);
element_mul_zn(pk, pk, pk_temp);
當我運行這個程序(CI沒有先前計算的值),這是輸出,我得到:
pk_temp
[116278406325033872100813200201193617766578695181932793603160637278854742066192092884782310233584512588249536578523628847229234460071209045611450183651531, 2021454548422679707182594138446448992982063147118097540714810473185383559710078393323207940613550542761869670939719707936590719813436809712827363459486303]
ci
557018308384393102708847545615423648196401851115
After pk_temp^ci
pk_temp
[108256843552655255908398113161102639677286937761571877242159361199581616450078081163742350174144405610156719380747507503987165257266343606269839543701390, 315460454942637140235438889718432767280220200962474346118962958364243678526968323118117335000004382683381426774251553048778733132443252812268528626451784]
After pk = pk + pk
pk
0
After pk = pk * pk_temp
pk
O
UPDATE 如果pk初始化爲Zr中的一個元素,則加法運作。
一般不使用相同的變量既參數,導致一個操作一個好主意 - 這不僅是因爲不是乾淨的代碼,而且還因爲它可能會導致參數的值被覆蓋,因爲它被函數使用。我不知道「PBC」是否這樣做,但症狀與此解釋一致。 – 2013-03-07 18:01:22
@HenrickHellström僅在該行發生錯誤。 pk_temp的pow操作沒有顯示任何類似的行爲。 – Ajoy 2013-03-08 03:50:07