Ищу функцию Ха sh - PullRequest
0 голосов
/ 03 мая 2020

Я ищу функцию ha sh со следующими свойствами

  1. Она отображает произвольную строку равномерно между 0 и 1
  2. Выход функции ha sh не зависит от длины строки
  3. Функция ha sh принимает случайное начальное число
  4. Для данного случайного начального числа отображение из строки в (0,1) имеет определенное значение c если Алиса и Боб вычисят га sh для данной строки и случайного начального числа, они оба получат одинаковое значение
  5. . Я не беспокоюсь о безопасности. Мне все равно, если кто-то в теории мог бы восстановить набор строк с учетом случайного начального числа и значения ha sh

Было бы здорово получить некоторые идеи.

1 Ответ

0 голосов
/ 03 мая 2020

Если вам не нравится это «решение», объясните, почему нет, и вы получите лучшие ответы.

Возьмите таблицу кодов ASCII и выбросьте коды для не-символов, таких как «звонок», у вас останется примерно 100 символов.

Создайте отображение 1: 1 между символами и двумя цифрами git, например, вы можете начать с

space <-> 00
! <-> 01
A <-> 33
...
Z <-> 58
...
a <-> 65

Я ожидаю, что вы получить картину. Теперь закодируйте первые 32 (или любые другие) символы в вашей строке очевидным способом, например,

`Aa aa` -> `3365006565`

и добавьте в строку любые строки короче, чем 32 символа, с помощью 00. (Я не мог потрудиться набрать все 00 для примера.)

Сгенерировать случайное число в диапазоне [1,64] и использовать его для поворота строки цифр c влево на это число мест.

Поставьте десятичную точку перед тем, что осталось, и вы получите искомое действительное число.

Я считаю, что это удовлетворяет вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...