Неясно, что вы пытаетесь сделать: проверьте правильность введенного пароля (как при входе в систему); или внедрить шифрование данных, если ключ получен из пароля.
Если это последнее (которое известно как шифрование на основе пароля ), то вам следует использовать функцию получения ключа , например PBKDF2
. Функция получения ключа берет соль и предоставленный пароль пользователя и создает ключ, который можно использовать с шифром, таким как AES.
Для шифрования вы должны ввести пароль, сгенерировать случайную соль и получить ключ, используя KDF. Затем вы будете использовать этот ключ с AES в подходящем режиме блочного шифрования для шифрования данных и хранить только соль и зашифрованные данные (и все, что требуется для режима шифрования).
Чтобы расшифровать, вы запросите пароль, загрузите соль из файла и заново получите ключ. Затем вы будете использовать этот ключ для расшифровки файла.
Цель соли состоит в том, чтобы предотвратить применение предварительных вычислений к атаке по словарю. Действительно возможно выполнить атаку по словарю грубой силы, как только соль известна, но KDF спроектирован так, чтобы быть достаточно медленным, чтобы сделать это невозможным без предварительного вычисления.