我有这样的代码,使用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