Я ищу алгоритм, который является односторонней функцией, такой как хеш-функция. И алгоритм принимает небольшой ввод (серверные биты, менее 512 бит) и сопоставляет его с длинным выходом (1 КБ или более). Вы знаете алгоритм или функцию, подобную этой?
Ищем одностороннюю функцию с небольшим входом и длинным выходом
Ответы (3)
Из теоремы Шеннона вы не Вы не получите никакой защиты, имея зашифрованный текст большего размера, чем ваш обычный текст, если только ключ (или процедура создания зашифрованного текста) не отличается для любого ввода. Даже в этом случае вам нужно будет назначить только одну клавишу (или механизм) для каждого входа x
иначе вы нарушите определение функции. Итак, если вы примените механизм шифрования f: X (множество входов) -> Y (множество выходов), то |Y| <= |X|
.
Все это говорит о том, что если ваш ввод меньше 512
бит, вы ничего не получите, производя 1KB
вывода. Теперь я рекомендую вам использовать одну из функций, перечисленных на вики-странице односторонней функции
Keccak имеет вывод переменной длины (хотя и не оценивается в SHA-3), его "утверждение безопасности отделено от длина вывода. Существует минимальная длина вывода...", а хэш-функция Skein имеет переменную вывод до 16 эксабайт
Какими бы ни были ваши причины, вы можете вычислять хэши одних и тех же небольших данных, используя разные алгоритмы, а затем объединять эти хэши. Если вывод недостаточно велик, вычислите хэши хэшей и добавьте их.
Как указано в других ответах, это не имеет большого смысла с точки зрения безопасности.