Прежде всего, пожалуйста, не используйте DES. Это было сломано из многих лет. Вместо этого используйте AES .
У меня проблема в том, что я получаю
мой ключ для шифрования и, очевидно, мне нужно
тот же ключ для расшифровки.
Если вы используете методы симметричной криптографии, то это все. В противном случае обратите внимание на асимметричное шифрование .
Но это кажется парадоксом, потому что
если я храню свой ключ в файле или в
база данных, кто-то не может получить ключ
и расшифровать мой файл?
Да, кто-то может это сделать.
Maybe I am missing something, but is there a way to generate a key using a supplied pass phrase?
Вы не используете ключ, используя фразу-пароль. Обычно вы делаете следующие вещи:
- генерация ключей
- зашифровать ключ, сгенерированный с помощью симметричного ключа, полученного из ключевой фразы
А почему бы кому-то не захотеть пользоваться
пароль, если они должны хранить
сгенерированный ключ где-то еще?
Может быть несколько причин. Например, вы можете сохранить ключ на съемном устройстве и просто подключить его к компьютеру для получения ключа, не вводя ключевую фразу.
Наличие парольной фразы также имеет свой недостаток: парольная фраза должна быть запомнена, ее можно угадать, если она слишком длинная, вероятно, вы запишите ее (и это почти то же самое, что сохранить ее в файле)
EDIT:
для генерации ключа из пароля посмотрите на PBKDF2 ( соответствующий пост ).