gpt4 book ai didi

c - PBC 库中的元素 mul

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:26 26 4
gpt4 key购买 nike

我有这段代码,它使用了 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

更新如果 pk 被初始化为 Zr 中的一个元素,则加法有效。

最佳答案

element_mul_zn(pk, pk, pk_temp);

但实际上,您的 pk_temp 在 G2 而不是 Zn。

定义见include/pbc_field.h

static inline void element_mul_zn(element_t c, element_t a, element_t z) {
mpz_t z0;
PBC_ASSERT_MATCH2(c, a);
//TODO: check z->field is Zn
mpz_init(z0);
element_to_mpz(z0, z);
element_mul_mpz(c, a, z0);
mpz_clear(z0);
}

代码不会检查 z->field 是否为 Zn,只会将 G2 转换为 mpz .如果你想将 G2 转换为 mpz 是没有意义的,而 element_to_mpz 只会给你 0。

关于c - PBC 库中的元素 mul,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com