Merge pull request 'main' (#12) from sangge/mimajingsai:main into main
Reviewed-on: ccyj/mimajingsai#12
This commit is contained in:
commit
21cf4a1239
32
src/tpre.py
32
src/tpre.py
@ -164,11 +164,15 @@ def hash4(triple_G: Tuple[point,
|
|||||||
|
|
||||||
def KDF(G: point) -> int:
|
def KDF(G: point) -> int:
|
||||||
sm3 = Sm3() #pylint: disable=e0602
|
sm3 = Sm3() #pylint: disable=e0602
|
||||||
|
print(G)
|
||||||
for i in G:
|
for i in G:
|
||||||
sm3.update(i.to_bytes(32))
|
sm3.update(i.to_bytes(32))
|
||||||
digest = sm3.digest(32)
|
digest = sm3.digest()
|
||||||
digest = digest
|
digest = digest
|
||||||
digest = int.from_bytes(digest, 'big') % sm2p256v1.P
|
digest = int.from_bytes(digest, 'big') % sm2p256v1.P
|
||||||
|
mask_128bit = (1 << 128) - 1
|
||||||
|
digest = digest & mask_128bit
|
||||||
|
print('key =',digest)
|
||||||
return digest
|
return digest
|
||||||
|
|
||||||
def GenerateKeyPair(
|
def GenerateKeyPair(
|
||||||
@ -199,17 +203,16 @@ def GenerateKeyPair(
|
|||||||
#pk_A, sk_A = GenerateKeyPair(0, ())
|
#pk_A, sk_A = GenerateKeyPair(0, ())
|
||||||
#pk_B, sk_B = GenerateKeyPair(0, ())
|
#pk_B, sk_B = GenerateKeyPair(0, ())
|
||||||
|
|
||||||
def Encrypt(pk: point, m: int) -> Tuple[Tuple[
|
def Encrypt(pk: point, m: bytes) -> Tuple[Tuple[
|
||||||
point,point, int], int]:
|
point,point, int], bytes]:
|
||||||
enca = Encapsulate(pk)
|
enca = Encapsulate(pk)
|
||||||
K = enca[0].to_bytes()
|
K = enca[0].to_bytes(16)
|
||||||
capsule = enca[1]
|
capsule = enca[1]
|
||||||
if len(K) != 16:
|
if len(K) != 16:
|
||||||
raise ValueError("invalid key length")
|
raise ValueError("invalid key length")
|
||||||
iv = b'tpretpretpretpre'
|
iv = b'tpretpretpretpre'
|
||||||
sm4_enc = Sm4Cbc(K, iv, DO_ENCRYPT) #pylint: disable=e0602
|
sm4_enc = Sm4Cbc(K, iv, DO_ENCRYPT) #pylint: disable=e0602
|
||||||
plain_Data = m.to_bytes(32)
|
enc_Data = sm4_enc.update(m)
|
||||||
enc_Data = sm4_enc.update(plain_Data)
|
|
||||||
enc_Data += sm4_enc.finish()
|
enc_Data += sm4_enc.finish()
|
||||||
enc_message = (capsule, enc_Data)
|
enc_message = (capsule, enc_Data)
|
||||||
return enc_message
|
return enc_message
|
||||||
@ -222,7 +225,7 @@ def Decapsulate(ska:int,capsule:capsule) -> int:
|
|||||||
return K
|
return K
|
||||||
|
|
||||||
def Decrypt(sk_A: int,C:Tuple[Tuple[
|
def Decrypt(sk_A: int,C:Tuple[Tuple[
|
||||||
point, point, int], int]) ->int:
|
point, point, int], bytes]) ->int:
|
||||||
'''
|
'''
|
||||||
params:
|
params:
|
||||||
sk_A: secret key
|
sk_A: secret key
|
||||||
@ -358,7 +361,7 @@ def mergecfrag(cfrag_cts:list)->list:
|
|||||||
cfrags = []
|
cfrags = []
|
||||||
for cfrag_ct in cfrag_cts:
|
for cfrag_ct in cfrag_cts:
|
||||||
cfrags_list.append(cfrag_ct[0])
|
cfrags_list.append(cfrag_ct[0])
|
||||||
cfrags_list.append(cfrag_ct[1])
|
ct_list.append(cfrag_ct[1])
|
||||||
cfrags.append(cfrags_list)
|
cfrags.append(cfrags_list)
|
||||||
cfrags.append(ct_list[0])
|
cfrags.append(ct_list[0])
|
||||||
return cfrags
|
return cfrags
|
||||||
@ -427,12 +430,17 @@ def DecryptFrags(sk_B: int,
|
|||||||
pk_B: point,
|
pk_B: point,
|
||||||
pk_A: point,
|
pk_A: point,
|
||||||
cfrags:list
|
cfrags:list
|
||||||
) -> int:
|
) -> bytes:
|
||||||
capsules,enc_Data = cfrags # 加密后的密文
|
capsules,enc_Data = cfrags # 加密后的密文
|
||||||
K = DecapsulateFrags(sk_B, pk_B, pk_A, capsules)
|
K = DecapsulateFrags(sk_B, pk_B, pk_A, capsules)
|
||||||
|
K = K.to_bytes(16)
|
||||||
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
|
||||||
dec_Data = sm4_dec.update(enc_Data)
|
try:
|
||||||
dec_Data += sm4_dec.finish()
|
dec_Data = sm4_dec.update(enc_Data)
|
||||||
|
dec_Data += sm4_dec.finish()
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print("key error")
|
||||||
|
dec_Data = b''
|
||||||
return dec_Data
|
return dec_Data
|
Loading…
x
Reference in New Issue
Block a user