Golang Scrypt Decrypt - PullRequest
       15

Golang Scrypt Decrypt

0 голосов
/ 18 мая 2018

Я пытаюсь имитировать в Go функциональность, доступную в библиотеке python (https://pypi.org/project/scrypt/) для расшифровка дайджест, сгенерированный скриптом (с правильным паролем).

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

Я не эксперт по безопасности, и я не понимаю математики / чисел, поэтому мне кажется, что я пытаюсь воспроизвести эту библиотеку python вне моего понимания. Я предполагаю, что это возможно, потому что pythonбиблиотека, кажется, достигла этого.

Кто-нибудь знает, с чего бы я вообще приступил к решению этой проблемы? Или будьте достаточно любезны, потратив время на то, чтобы предоставить какую-то форму примера кода, чтобы помочь мне.Спасибо.

Обновление

Функция scrypt по сути является хеш-функцией и использует пароль в качествеспособ получения дайджеста: это означает, что не должно быть способа извлечь исходное сообщение (сообщение, которое было хэшировано).

Таким образом, при таком понимании имеет смысл, что интерфейс Голанга для scrypt нене поддерживает такие функции, как decrypt.Но тогда как работает функция decrypt py-script ?

Что ж, если я оглянемся на https://www.tarsnap.com/scrypt.html, то в нем говорится, что исполняемый файл scrypt предоставляет «утилиту шифрования»...

Простая утилита шифрования на основе пароля доступна в качестве демонстрации функции получения ключа scrypt.Утилита scrypt может быть вызвана как scrypt enc infile [outfile] для шифрования данных (если outfile не указано, зашифрованные данные записываются в стандартный вывод), или как scrypt dec infile [outfile] для дешифрования данных (если outfile не указано,дешифрованные данные записываются в стандартный вывод).

... и после проверки py-script я вижу, что он встраивает версию исполняемого файла scrypt, то есть py-script вызывает * 1037 исполняемого файла* и dec функции.

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

1 Ответ

0 голосов
/ 18 мая 2018

Отсутствует расшифровка scrypt, только проверка.

Функция scrypt decrypt принимает пароль и хеш пароля, созданный функцией encrypt, и проверяет их, выполняя те же действия.операция с паролем, который выполняла функция encrypt, а затем сравнение двух хешей.

Проверьте документацию Golang на наличие имени и использования функции проверки.

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

...