Рейтинг:0

Генератор неперекрывающихся начальных чисел для небольшого диапазона вывода

флаг in

Видимый это, но это бесполезно, поскольку позволяет использовать тривиальные решения, увеличивая размер выходного пространства до точки, при которой любая хеш-функция не будет сталкиваться.

Этот вопрос пытается быть менее бесполезной версией что. т.е. для случая, когда выходной диапазон мал. Скажите, что мое выходное пространство $\mathcal{S} = \{0, 1, \ldots, 10^{6}\}$. Здесь легко могут возникнуть коллизии при использовании функций хеширования.

Перефразируя вопрос: есть ли какая-нибудь функция $f : \text{seed}, \text{диапазон}, \text{состояние} \mapsto n$, такой что:

  • Требование 1: Выходной диапазон может быть небольшим. Например. от $0$ к $10^6$.
  • Требование 2: Нет коллизий для разных семян. т.е. для любого семени и диапазона, $f(\text{seed}, \text{range}, \text{state}_1) = f(\text{seed}, \text{range}, \text{state}_2)$ если и только если $\текст{состояние}_1 = \текст{состояние}_2$.
  • Требование 3: Невозможно предсказать, какое будет следующее число, если не вызвать функцию $f$. Например. если $f(\text{seed}, \text{диапазон}, \text{состояние}_1) = 3$, то не может знать, что на выходе $\текст{состояние}_2$ не подключая его к функции $f$. Это устраняет тривиальные решения, которые могут использовать определение $f' : \text{seed}, \text{range}, \text{state} \mapsto \text{seed} \times \text{state} \mod \text{range}$, где начальное число, диапазон и состояние — положительные числа.
Рейтинг:1
флаг my

есть ли какая-нибудь функция $f : \text{seed}, \text{диапазон}, \text{состояние} \mapsto n$,

Да; они известны как Формат, сохраняющий шифрование функции. Это функции, которые представляют собой блочные шифры произвольного размера:

  • Требование 1: Выходной диапазон может быть небольшим. Например. от $0$ к $10^6$.

Да, они могут брать совсем небольшие дальности. По моему опыту, FPE, как правило, не любят действительно крошечные диапазоны (например, диапазон менее 100 значений); диапазона в миллион достаточно для тех, о которых я знаю

  • Требование 2: Нет коллизий для разных семян

Если мы используем начальное число в качестве ключа FPE, а состояние — в качестве открытого текста FPE, это гарантировано — операция FPE обратима (то есть, переводя операцию FPE в режим расшифровки и передавая ей тот же ключ, она преобразует зашифрованный текст обратно в открытый текст), следовательно, два открытых текста не могут быть преобразованы в один и тот же зашифрованный текст.

Требование 3: Невозможно предсказать, какое будет следующее число, если не вызвать функцию $f$

Тоже верно; FPE предназначен для обеспечения безопасности (если вы не знаете ключ), поэтому единственный способ предсказать, как будет преобразован открытый текст, — это использовать ключ.

Функции FPE также требуют «настройки» (дополнительный вход, который не обязательно должен быть закрытым, который изменяет сопоставление, определенное шифрованием) — я бы предложил использовать диапазон как часть настройки (в дополнение к изменению того, как функция FPE работает внутри) - таким образом, вам не нужно беспокоиться о том, что функция с одним диапазоном пропускает информацию о функции с другим диапазоном.

Теперь, если вам нужен совет относительно того, какую функцию FPE использовать, лучшая из тех, что я нашел, это FF1 определено здесь функция; из того, что я посеял, оно кажется довольно твердым.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.