Строка 10 цифр -> код 15 цифр - чтобы перебором нельзя раск
От: paradok  
Дата: 21.06.22 09:59
Оценка:
Приветствую!

Есть наборы объектов с полями на клиенте и сервере
-> название объекта
-> код 10 цифр
-> код 10 цифр (N штук)
..
-> код 15 цифр
-> код 15 цифр (M штук)
..

Объекты хранятся на клиенте и сервере как частично (на 90%) пересекающиеся множества.

если бы наборы были полностью идентичны, синхронны, то N=M
и каждому коду 10 цифр есть однозначное соответствие кода 15 цифр.

Но наборы не синхронны.

Коды 10 цифр присваиваются при создании объектов на клиенте, они всегда есть, их кол-во от 1 до N, они разные.
(при инициализации на клиенте кодов 15 цифр нет)

Коды 10 и 15 цифр присваиваются при создании объектов на сервере, они всегда есть, их кол-во попарно равны.

Клиент Коды 15 цифр получают по сети передав в открытом виде Название объекта на сервер
Коды 10 цифр по сети не передаются

На сервере, это известно, код 15 цифр получают каким-то (неизвестным) преобразованием или шифрованием из 10 цифр кода
и возможно + имении объекта

Клиент, передав на сервер код 15 цифр -> затем сервер однозначно устанавливает Название объекта и соответствующий парный код 10 цифр
и производит запуск каких-то процедур. Каких — клиент не важно.

Задача:
На клиенте, как проверить наличие пары код 15 и код 10 цифр данного объекта на сервере не запрашивая сервер?
Предварительно получив от сервера код 15 цифр, но без указания для какого кода 10 цифр это пара?


Было предложено в добавок к 15 цифр коду чтобы с сервера один раз передавался еще и CRC для каждого кода 10 цифр
или что-то подобное необратимое из известных публичных открытых алгоритмов,
тогда на клиенте по коду 10 цифр (он есть на клиенте изначально, дается при создании объекта на клиенте)
вычисляем crc и сравниваем с crc от сервера.

Однако ввиду коротких последовательностей код 10 цифр и 15 цифр возможно на клиенте перебором получить все пары код 10 — код 15 цифр.
И посторонний клиент сможет сразу по коду 15 цифр получать и код 10 цифр, чего никак не должно быть

тогда было предложено усовершенствование на оценку 3-
Взять такой СКС чтобы он давал множество коллизий. кажем 1000-10000 на наборе 10 цифр,
тогда подбор будет давать множественные ошибочные пары код10 — код15 и ущерб вероятно может быть снижен до приемлем уровня..

Понимаю, что все это криво, но все же посоветуйте что-нибудь правильное!
(заново систему спроектировать нельзя)
Отредактировано 21.06.2022 10:02 paradok . Предыдущая версия . Еще …
Отредактировано 21.06.2022 10:00 paradok . Предыдущая версия .
Re: Строка 10 цифр -> код 15 цифр - чтобы перебором нельзя раск
От: kov_serg Россия  
Дата: 21.06.22 10:27
Оценка: 6 (1)
Здравствуйте, paradok, Вы писали:

P>Коды 10 цифр по сети не передаются

P>На сервере, это известно, код 15 цифр получают каким-то (неизвестным) преобразованием или шифрованием из 10 цифр кода
P>и возможно + имении объекта

Ну если включить режим телепата, то можно предположить что исходное число 10знаков это 32битное целого (0..4294967295)
То 15 знаков для передачи можно получить с помощью кодов для восстановления ошибок
[B0 B1 B2 B3 B4 B5 B6 B7] => [B0 B1 B2 B3 B4 B5 B6 B7 | P0 P1 P2 P3] и так 4 раза, где P0..P3 -- это четности B0..B7 с разным шагом
32bit -> 48bit с возможностью восстановления до 1-го бита в каждом байте

ps: а вообще вариантов чуть более чем немерено да и постановка задачи не внятная
Re[2]: Строка 10 цифр -> код 15 цифр - чтобы перебором нельзя раск
От: paradok  
Дата: 22.06.22 12:44
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, paradok, Вы писали:


P>>Коды 10 цифр по сети не передаются

P>>На сервере, это известно, код 15 цифр получают каким-то (неизвестным) преобразованием или шифрованием из 10 цифр кода
P>>и возможно + имении объекта

_>Ну если включить режим телепата, то можно предположить что исходное число 10знаков это 32битное целого (0..4294967295)

_>То 15 знаков для передачи можно получить с помощью кодов для восстановления ошибок
_>[B0 B1 B2 B3 B4 B5 B6 B7] => [B0 B1 B2 B3 B4 B5 B6 B7 | P0 P1 P2 P3] и так 4 раза, где P0..P3 -- это четности B0..B7 с разным шагом
_>32bit -> 48bit с возможностью восстановления до 1-го бита в каждом байте

_>ps: а вообще вариантов чуть более чем немерено да и постановка задачи не внятная



да, весьма вероятно, но данных нет.

С удовольствием увеличу внятноть! Подскажите что уточнить?
Re[3]: Строка 10 цифр -> код 15 цифр - чтобы перебором нельзя раск
От: kov_serg Россия  
Дата: 22.06.22 19:18
Оценка:
Здравствуйте, paradok, Вы писали:

P>С удовольствием увеличу внятноть! Подскажите что уточнить?

Примеры с данными могли бы внести ясности.
Re[4]: Строка 10 цифр -> код 15 цифр - чтобы перебором нель
От: paradok  
Дата: 23.06.22 07:43
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, paradok, Вы писали:


P>>С удовольствием увеличу внятноть! Подскажите что уточнить?

_>Примеры с данными могли бы внести ясности.

На Клиенте
----------
объект_1
коды10(
код10 = 1234567890,
код10 = 0987654321,
код10 = 1111111111,
код10 = 7777777777
)
коды15(
код15 = пусто,
код15 = пусто,
код15 = пусто,
код15 = пусто
)


На сервере (доступ через незащищенную сеть)
-----------------------------
код15 = F(имя_объекта,код10)
-----------------------------
объект_1
коды10(
код10 = 1234567890,
код10 = 0987654321,
код10 = 1111111111
)
коды15(
код15 = 333333333333333,
код15 = 120845289104737,
код15 = 222222222222222
)


Запрос на сервер от клиента
-----------------------------
Дай инфу для имя_объекта=объект_1


Ответ сервера
------------
код15=222222222222222,код15 = 333333333333333,код15 = 120845289104737


Апдейт на клиенте
-----------------
объект_1
коды10(
код10 = 1234567890,
код10 = 0987654321,
код10 = 1111111111,
код10 = 7777777777
)
коды15(
код15 = 222222222222222
код15 = 333333333333333,
код15 = 120845289104737,
код15 = пусто
)

Запрос на сервер от клиента
Сделать_работу_для:
имя_объекта=объект_1
и код15 = 120845289104737

Ответ сервера:
Ок (невидимо: сделана работа для объекта_1 с код10=0987654321)

----- пока все было хорошо -----------

----- но есть второй сервер в локальной защищенной сети на который могут посылаться и код10 и код15 ------------
Запрос на сервер от клиента
Сделать_работу_для:
имя_объекта=объект_1
и код15 = 120845289104737, код10=1234567890, код10=0987654321

------ это плохо ----
2 раза выполнится одна и таже работа для 1 и 3 параметра.

----- задача — избежать этого или снизить вероятность этого ----

----- трудность ---- на клиенте нет однозначного соответствия между коды10 и коды15
Отредактировано 23.06.2022 8:07 paradok . Предыдущая версия . Еще …
Отредактировано 23.06.2022 8:00 paradok . Предыдущая версия .
Отредактировано 23.06.2022 7:50 paradok . Предыдущая версия .
Отредактировано 23.06.2022 7:47 paradok . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.