Правовая оговорка: Я не специалист по безопасности.
Это походит на плохую идею: Вы позволяете кому-то зашифровать материал со 'скрытым' ключом, который Вы даете ему. Я не думаю, что это может быть сделано безопасным.
, Возможно, асимметричные ключи могли работать:
я не уверен, но я полагаю, что клиент может на самом деле зашифровать лицензионный ключ с открытым ключом, который Вы дали ему. Можно тогда дешифровать его с закрытым ключом и повторно зашифровать также.
Вы могли сохранить отдельную пару "открытый/закрытый ключ" на клиента, чтобы удостовериться, что Вы на самом деле получаете материал от правильного клиента - теперь Вы ответственны за ключи...
Пространственное разбиение на самом деле представляет собой семейство тесно связанных алгоритмов, которые разделяют пространство, чтобы приложения могли легче обрабатывать точки или многоугольники.
Я считаю, что есть много способов решить вашу проблему. Я не Я не знаю, насколько сложно вы хотите построить свое решение. Простым способом, вероятно, было бы построить двоичное дерево, разделив пространство на 2. Все точки разделены между некоторой средней плоскостью. Постройте свое дерево, рекурсивно разделяя его до тех пор, пока у вас не закончатся точки.
Тогда поиск ближайшего соседа будет оптимизирован, потому что каждый обход дерева сужает область поиска.
В некоторых источниках это называется
1141594] kd tree