Можно ли проверить, был ли хэш сгенерирован с использованием SHA1 и является ли он допустимым хэшем?

#c# #sha #hmacsha1

#c# #sha #hmacsha1

Вопрос:

Я столкнулся с проблемой, когда я хочу проверить хэш, который был сгенерирован с использованием SHA1. Можно ли выполнить обратное проектирование и выяснить, был ли хэш сгенерирован с использованием алгоритма HMACSHA1?

Комментарии:

1. У вас есть доступ к данным, которые были хэшированы?

2. Практически? Если у вас нет исходного сообщения, используемого для генерации хэша? Нет. Это односторонний хэш.

3. Каков ваш контекст здесь? Откуда берутся ваши хэши и почему вы думаете, что они могут быть неправильно хэшированы? Что вы делаете с хэшами на своей стороне? В значительной степени, если кто-то отправляет вам хэш и говорит, что это SHA1, вы должны поверить ему на слово. Предположительно, если они отправят вам его снова некоторое время спустя, они будут хэшировать его таким же образом, так что это не будет иметь большого значения. Существует тривиальная проверка, чтобы убедиться, что это правильная длина.

Ответ №1:

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

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

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

Ответ №2:

Если у вас есть данные, которые были хэшированы, вы можете использовать хэш SHA1 для этих данных и сравнить значения хэша, чтобы увидеть, совпадают ли они. Если они равны, то изначально использовался SHA1.

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