Краткий ответ: это невозможно.
Поскольку SHA-1 - это криптографическая хеш-функция , по принципу голубиных отверстий математически невозможно изменить.Есть только 2 160 возможных хэшей SHA-1.Поскольку существует бесконечное количество возможных входных строк, должны быть коллизии (несколько входов, которые хэшируют одно и то же значение).В общем, вы никак не можете узнать, какая из этих строк была исходным вводом.
Однако строки реального мира не совсем произвольны.Если вам известна некоторая информация о вашей входной строке (например, она была длиной менее 5 символов), с большой вероятностью ввод будет уникальным.К сожалению для вас, хеш-функции, такие как SHA-1, намеренно вычислительно невозможны для инвертирования.(Есть теоретические атаки на SHA-1, но я не думаю, что какие-либо из них в настоящее время считаются даже практически осуществимыми.)
Поэтому, если вам нужно восстановить хешированные данные, вы должны использовать грубую силу: попробуйте SHA-1 каждую строку длиной менее n и посмотрите, совпадает ли хеш.Но существует экспоненциально много строк длиной до n , поэтому это быстро становится невозможным.
Существует один возможный способ восстановления хешированных данных до конца вселенной .Ваша единственная надежда - использовать более сложный метод, такой как радужные столы .Это будет только , если вы знаете, что ваша исходная строка была очень короткой (менее ~ 15 символов).Даже для коротких строк предварительное вычисление таблицы займет много времени (и гигабайт дискового пространства).