From d7ca5f4725c610f7ae780b0194594507973053b1 Mon Sep 17 00:00:00 2001 From: dqy <1016751306@qq.com> Date: Sat, 21 Oct 2023 20:42:41 +0800 Subject: [PATCH 1/2] feat: change timeout --- src/server.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/server.py b/src/server.py index d030e2c..e6f8107 100644 --- a/src/server.py +++ b/src/server.py @@ -2,11 +2,9 @@ from fastapi import FastAPI from fastapi.encoders import jsonable_encoder from fastapi.responses import JSONResponse from contextlib import asynccontextmanager -from typing import Tuple, Callable import sqlite3 import asyncio import time -import random @asynccontextmanager async def lifespan(app: FastAPI): @@ -28,7 +26,7 @@ cursor.execute('''CREATE TABLE IF NOT EXISTS nodes ( )''') def init(): - task = asyncio.create_task(receive_heartbeat_internal()) + asyncio.create_task(receive_heartbeat_internal()) def clean_env(): # 关闭游标和连接 @@ -93,16 +91,13 @@ async def receive_heartbeat(ip: str): cursor.execute("UPDATE nodes SET last_heartbeat = ? WHERE ip = ?", (time.time(), ip)) return {"status": "received"} -async def receive_heartbeat_internal() -> int: +async def receive_heartbeat_internal(): while 1: - print('successful delete1') - timeout = 10 + timeout = 70 # 删除超时的节点 cursor.execute("DELETE FROM nodes WHERE last_heartbeat < ?", (time.time() - timeout,)) conn.commit() - print('successful delete') await asyncio.sleep(timeout) - return 1 @app.get("/server/send_nodes_list") async def send_nodes_list(count: int) -> JSONResponse: From 58ca8a6564f9e1f95c844b0d6d1e168f14bebd0c Mon Sep 17 00:00:00 2001 From: dqy <1016751306@qq.com> Date: Sat, 21 Oct 2023 21:58:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20GenerateReKey=E5=A2=9E=E5=8A=A0ID?= =?UTF-8?q?=E5=85=83=E7=BB=84;=20=E4=BF=AE=E6=94=B9=E7=94=9F=E6=88=90s=5Fx?= =?UTF-8?q?=E5=92=8CKfrag=E7=9A=84ID=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tpre.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tpre.py b/src/tpre.py index a4c2f20..3019cd0 100644 --- a/src/tpre.py +++ b/src/tpre.py @@ -272,7 +272,7 @@ def f(x: int, f_modulus: list, T: int) -> int: return res -def GenerateReKey(sk_A: int, pk_B: point, N: int, T: int) -> list: +def GenerateReKey(sk_A: int, pk_B: point, N: int, T: int, id_tuple: Tuple[int,...]) -> list: """ param: skA, pkB, N(节点总数), T(阈值) @@ -288,7 +288,7 @@ def GenerateReKey(sk_A: int, pk_B: point, N: int, T: int) -> list: # d是Bob的密钥对与临时密钥对的非交互式Diffie-Hellman密钥交换的结果 d = hash3((X_A, pk_B, multiply(pk_B, x_A))) - # 计算多项式系数, 确定代理节点的ID(一个点) + # 计算多项式系数 f_modulus = [] # 计算f0 # f0 = (sk_A * inv(d, G.P)) % G.P @@ -305,10 +305,10 @@ def GenerateReKey(sk_A: int, pk_B: point, N: int, T: int) -> list: for i in range(N): y = random.randint(0, sm2p256v1.N - 1) Y = multiply(g, y) - s_x = hash5(i, D) # id需要设置 + s_x = hash5(id_tuple[i], D) # id需要设置 r_k = f(s_x, f_modulus, T) U1 = multiply(U, r_k) - kFrag = (i, r_k, X_A, U1) + kFrag = (id_tuple[i], r_k, X_A, U1) KF.append(kFrag) return KF