Прямо сейчас, это то, что я делаю:
1. SHA-1 пароль типа «pass123», используйте первые 32 символа шестнадцатеричного декодирования для ключа
2. Зашифруйте с помощью AES-256 только с параметрами по умолчанию
^ Это достаточно безопасно?
Мне нужно, чтобы мое приложение защищало данные с помощью пароля. Когда я гуглю это, возникает слишком много разных вещей, и некоторые вещи, которые я тоже не понимаю. Я задаю это как общий вопрос, а не какой-либо конкретный язык кодирования (хотя я планирую использовать это с Java и с iOS).
Итак, теперь, когда я пытаюсь сделать это более правильно, пожалуйста, следуйте тому, что я имею в виду:
Вводится пароль, такой как «pass123», а данные
то, что я хочу зашифровать, например, «Банковский счет 038414838 и пин-код 5931»
Используйте PBKDF2 для получения ключа из пароля. Параметры:
1000 итераций
длина 256 бит
Соль - это меня смущает, потому что я не знаю, где взять соль, я просто ее придумаю? Например, во всех моих шифрах всегда будет использоваться соль "F" (так как очевидно, что соли - это 8 битов, то есть всего один символ)
Теперь я беру этот ключ и хеширую его ?? Должен ли я использовать что-то вроде SHA-256? Это безопасно? А что такое HMAC? Должен ли я использовать это?
Примечание. Нужно ли выполнять оба шага 2 и 3 или все в порядке?
Хорошо, теперь у меня есть 256-битный ключ для шифрования. Поэтому я выполняю шифрование с использованием AES, но здесь есть еще одна запутанная часть (параметры).
Я не совсем уверен, какие разные "режимы" использовать, по-видимому, есть как CBC и EBC и куча других
Я также не уверен насчет «вектора инициализации», я просто придумываю его и всегда использую его?
А как насчет других опций, что такое PKCS7Padding?