Compare commits

...

5 Commits

View File

@ -351,18 +351,16 @@ def ReEncrypt(kFrag:list,
# capsule, enc_Data = C # capsule, enc_Data = C
# N 是加密节点的数量t是阈值 # 将加密节点加密后产生的t个capsule,ct合并在一起产生cfrags = {{capsule1,capsule2,...},ct}
def mergecfrag(sk_A: int, pk_A: point, pk_B: point, def mergecfrag(cfrag_cts:list)->list:
N: int, t: int)->tuple[Tuple[point,point ct_list = []
,int,point], ...]: cfrags_list = []
cfrags = () cfrags = []
kfrags = GenerateReKey(sk_A,pk_B,N,t) for cfrag_ct in cfrag_cts:
result = Encapsulate(pk_A) cfrags_list.append(cfrag_ct[0])
K,capsule = result cfrags_list.append(cfrag_ct[1])
for kfrag in kfrags: cfrags.append(cfrags_list)
cfrag = ReEncapsulate(kfrag,capsule) cfrags.append(ct_list[0])
cfrags = cfrags + (cfrag,)
return cfrags return cfrags
@ -370,12 +368,13 @@ def mergecfrag(sk_A: int, pk_A: point, pk_B: point,
def DecapsulateFrags(sk_B:int, def DecapsulateFrags(sk_B:int,
pk_B: point, pk_B: point,
pk_A:point, pk_A:point,
cFrags:Tuple[Tuple[point,point,int,point]] cFrags:list
) -> int: ) -> int:
''' '''
return: return:
K: sm4 key K: sm4 key
''' '''
Elist = [] Elist = []
Vlist = [] Vlist = []
idlist = [] idlist = []
@ -423,14 +422,14 @@ def DecapsulateFrags(sk_B:int,
# M = IAEAM(K,enc_Data) # M = IAEAM(K,enc_Data)
# cfrags = {{capsule1,capsule2,...},ct} ,ct->en_Data
def DecryptFrags(sk_B: int, def DecryptFrags(sk_B: int,
pk_B: point, pk_B: point,
pk_A: point, pk_A: point,
cFrags: Tuple[Tuple[point,point,int,point]], cfrags:list
C: Tuple[capsule,int]
) -> int: ) -> int:
capsule,enc_Data = C # 加密后的密文 capsules,enc_Data = cfrags # 加密后的密文
K = DecapsulateFrags(sk_B, pk_B, pk_A,cFrags) K = DecapsulateFrags(sk_B, pk_B, pk_A, capsules)
iv = b'tpretpretpretpre' iv = b'tpretpretpretpre'
sm4_dec = Sm4Cbc(K, iv, DO_DECRYPT) #pylint: disable= e0602 sm4_dec = Sm4Cbc(K, iv, DO_DECRYPT) #pylint: disable= e0602