2017-08-03 16 views
1

charm暗号の楕円曲線上にidentity要素が必要です。私はG1の5つの異なるランダム要素、すなわちelementList= {g1, g2, g3, g4, g5}を合計したいからです。今、私はG1に別のランダム要素、すなわちtemp= group.random(G1)を生成しました。Charm CryptoのElliptic CurveのIdentity要素とは何ですか?

temp = group.random(G1) 
elementList= {g1, g2, g3, g4, g5} 
for num in range(0, 5): 
    temp= temp+ elementList[num] 

どうすればいいですか?いくつかの専門家から聞きたいと思っています。

+0

@ArtjomB Charmには、Zrの要素、つまりgroup.init(ZR、0)とgroup.init(ZR、1)を初期化できる2つの関数があります。私は上記の関数を使ってZrの異なる元素の和と積を求めました。しかし、グループG1にはそのような機能はありません。 – Aisha

答えて

0

追加される同一要素は、楕円曲線上のグループの無限遠点です。この点を無限にするには、値引数なしでPairingGroup.init(G1)を使用できます。

例コード:

>>> from charm.toolbox.pairinggroup import PairingGroup,ZR,G1,G2,GT,pair 
>>> group = PairingGroup('SS512') 
>>> g = group.random(G1) 
>>> i = group.init(G1) # point at infinity 
>>> i + g == g 
True 

注:これは文書化されていないですし、将来のバージョンで変更される可能性があります。


特定の例では、アイデンティティ要素は必要ありません。コードを少し変更してください:

elementList = [g1, g2, g3, g4, g5] 
for num in range(len(elementList)): 
    if num == 0: 
     temp = elementList[num] 
    else: 
     temp = temp + elementList[num] 
関連する問題