tdoa_int = np.zeros((NUMBER, DIMIENSION), dtype=object)
        for i in range(NUMBER):
            tdoa_int[i] = float2Int(grid_tdoa[i])
            # 初始化相关加密参数 注意这里的加密方式不是原生的VHE的加密,而是为了求欧式距离,特殊定义了一些加密方式
        T = vhe.getRandomMatrix(DIMIENSION, 1, vhe.tBound)
        S = vhe.getSecretKey(T)
        I = np.eye(DIMIENSION, dtype=object)
        M_TDOA = vhe.KeySwitchMatrix(I, T)

        # M可以用来进行加密了
        # 先定义一个numpy数组 来存储加密数据
        enc_tdoa = np.zeros((NUMBER, DIMIENSION + 1), dtype=object)
        # print("开始对%dm网格的%d条tdoa数据进行加密" % (SQURE_SIZE, NUMBER))
        t0 = time.time()
        for i in range(NUMBER):
            enc_tdoa[i] = vhe.encrypt_distance(M_TDOA, tdoa_int[i])
        M_float = np.array(M_TDOA, dtype=float)
        M_I = np.linalg.pinv(M_float)
        I_star = vhe.getBitMatrix(I)
        A = I_star.dot(M_I)
        H = A.T.dot(A)
        H_int = np.zeros((H.shape[0], H.shape[1]), dtype=object)

        # print("H矩阵整数化,放大系数为:%d" % (H_large))
        for i in range(H.shape[0]):
            for j in range(H.shape[1]):
                H_int[i][j] = int(H_large * H[i][j])

        print("开始实时生成网格的ECEF坐标加密")

        grid_coor = grid_real[:, 1:4]
Esempio n. 2
0
    if type(coor_int[0][0]) == int:
        print("成功把浮点型的tdoa转换为python原生的int类型")

    print("初始化加密参数")
    # 初始化相关加密参数 注意这里的加密方式不是原生的VHE的加密,而是为了求欧式距离,特殊定义了一些加密方式
    T = vhe.getRandomMatrix(DIMIENSION, 1, vhe.tBound)
    S = vhe.getSecretKey(T)
    I = np.eye(DIMIENSION, dtype=object)
    M = vhe.KeySwitchMatrix(I, T)

    # M可以用来进行加密了
    # 先定义一个numpy数组 来存储加密数据
    enc_coor = np.zeros((NUMBER, DIMIENSION + 1), dtype=object)
    print("开始对%dm网格的%d条coor数据进行加密" % (SQURE_SIZE, NUMBER))
    t0 = time.time()
    for i in range(NUMBER):
        enc_coor[i] = vhe.encrypt_distance(M, coor_int[i])

        if (i + 1) % 10000 == 0:
            print("已完成%d条数据的加密,当前进度为%.2f%%" % ((i + 1),
                                               ((i + 1) / NUMBER) * 100))
    #
    t1 = time.time()
    print("完成加密,耗时%.2f秒" % (t1 - t0))
    print("保存密文coor")
    np.save("EncCOOR_150m.npy", enc_coor)

    print("保存密钥S,M")
    np.save("EncCOOR_150m_S.npy", S)
    np.save("EncCOOR_150m_M.npy", M)
        plane_toa = [0, 0, 0]
        # sensors_serial = [0,0,0]
        for i in range(len(j)):
            if SENSORS.__contains__(j[i][0]):
                if j[i][0] == 322:
                    plane_toa[0] = j[i][1]
                if j[i][0] == 436:
                    plane_toa[1] = j[i][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)
Esempio n. 4
0
        print("成功把浮点型的tdoa转换为python原生的int类型")

    print("初始化加密参数")
    # 初始化相关加密参数 注意这里的加密方式不是原生的VHE的加密,而是为了求欧式距离,特殊定义了一些加密方式
    T = vhe.getRandomMatrix(DIMIENSION, 1, vhe.tBound)
    S = vhe.getSecretKey(T)
    I = np.eye(DIMIENSION, dtype=object)
    M = vhe.KeySwitchMatrix(I, T)

    # M可以用来进行加密了
    # 先定义一个numpy数组 来存储加密数据
    enc_tdoa = np.zeros((NUMBER, DIMIENSION + 1), dtype=object)
    print("开始对%dm网格的%d条tdoa数据进行加密" % (SQURE_SIZE, NUMBER))
    t0 = time.time()
    for i in range(NUMBER):
        enc_tdoa[i] = vhe.encrypt_distance(M, tdoa_int[i])

        if (i + 1) % 10000 == 0:
            print("已完成%d条数据的加密,当前进度为%.2f%%" % ((i + 1),
                                               ((i + 1) / NUMBER) * 100))

    t1 = time.time()
    print("完成加密,耗时%.2f秒" % (t1 - t0))
    print("保存密文tdoa")
    np.save("EncTDOA_150m.npy", enc_tdoa)

    print("开始基于加密参数生成H矩阵")
    M_float = np.array(M, dtype=float)
    M_I = np.linalg.pinv(M_float)
    I_star = vhe.getBitMatrix(I)
    A = I_star.dot(M_I)