# sensors_serial[2] = j[i][0] list[1] = j[i][1] if j[i][0] == 13: # sensors_serial[2] = j[i][0] list[2] = j[i][1] plane_tdoa = calcTDOAByMessage(list) plane_tdoa_int = float2Int(plane_tdoa) enc_plane_tdoa_int = vhe.encrypt_distance(M_TDOA, plane_tdoa_int) top_k_index = calcEncTopKInex(enc_plane_tdoa_int, enc_tdoa, H) print("top", top_k_index) encSumCoor = calcEncLocationEstimationSum(top_k_index, enc_coor) # 对密文位置和解密 decSumCoor = vhe.decrypt(S_COOR, encSumCoor) # 解密后再缩小放大倍数 再取均值 predictCoor = decSumCoor / (5 * S2NS) print("predictCoor", predictCoor) # 然后转换为llh坐标 predictLLH = ecef2llh(predictCoor) # 开始预测 legal_pre = encQuicklyIdentify(lat, lon, predictLLH[0], predictLLH[1]) t1 = time.time() print("完成第%d条消息的快速认证,耗时=%.2f,进度为:%.2f%%" % (index + 1, (t1 - t0), ((index + 1) / len(messages) * 100))) # count+=1 if legal == 1 and legal_pre == 1: TP += 1
if j[i][0] == 13: plane_toa[2] = j[i][1] plane_tdoa = calcTDOAByMessage(plane_toa) # 将浮点型的飞机tdoa转换为整型 plane_tdoa_int = float2Int(plane_tdoa) enc_plane_tdoa_int = vhe.encrypt_distance(EncTDOA_M, plane_tdoa_int) # 加密的飞机的tdoa和网格的tdoa逐条计算密文欧式距离求top5的index top_k_index = calcEncTopKInex(enc_plane_tdoa_int, EncTDOA, EncTDOA_H) # 根据索引 再Coor中寻找对应的坐标数据累加 encSumCoor = calcEncLocationEstimationSum(top_k_index, EncCOOR) # 对密文位置和解密 decSumCoor = vhe.decrypt(EncCOOR_S, encSumCoor) # 解密后再缩小放大倍数 再取均值 predictCoor = decSumCoor / (5 * S2NS) # 然后转换为llh坐标 predictLLH = ecef2llh(predictCoor) error_llh = geodesic((lat, lon), (predictLLH[0], predictLLH[1])).m print("预测的LLH位置和飞机的LLH位置的误差为%.2fm" % error_llh) error.append(error_llh) predictError = predictError.append([{ 'id': id, 'latitude': lat, "longitude": lon, 'height': height, 'predictLatitude': predictLLH[0], 'predictLongitude': predictLLH[1],