Исходя из только что сделанного мною комментария к Понту Гаггу, предположим, что алгоритм хеширования выглядит следующим образом:
- Добавить некоторую длинную постоянную строку для ввода
- Вычислить хэш SHA-256 результата
- Выведите последние 5 символов хэша.
Тогда я почти уверен, что нет вычислительно выполнимого способа от вашей атаки с использованием открытого текста, чтобы выяснить, что такое хеш-функция. Чтобы даже доказать, что SHA-256 используется (при условии, что это хорошая хеш-функция, которая, насколько мы знаем в настоящее время), я думаю, вам нужно знать длинную строку, которая хранится только внутри «черного ящика». ».
Тем не менее, если бы я знал какие-либо опубликованные 20-битные хеш-функции, то я бы сначала проверил их. Но я не знаю ничего: все обычные нешифрующие строковые хеш-функции являются 32-битными, потому что это ожидаемый размер целочисленного типа. Возможно, вам следует сравнить свои результаты с результатами хэша CRC, PJW и BUZ для одних и тех же строк, а также с некоторыми вариантами хеша DJB с разными простыми числами и любыми хеш-функциями, встроенными в известные языки программирования, такие как java.lang.String.hashCode
. Возможно, что 5 выходных символов выбраны из 8 шестнадцатеричных символов, сгенерированных одним из них.
Помимо этого (и любых других известных хеш-строк, которые вы можете найти), у меня нет идей. Для криптоанализа хэша черного ящика вы начинаете с поиска корреляций между битами ввода и битами вывода. Это дает вам подсказки, какие функции могут быть задействованы в хэше. Но это огромный вопрос, с которым я не знаком.