Ошибочно полагаться на криптографически-случайный генератор чисел, генерирующий одинаковые случайные числа на разных платформах.Обычно криптографическая случайная соль, используемая в алгоритме получения ключа, должна передаваться от отправителя к получателю.Это может быть передано как секрет, но это нужно сообщить.«Главный пароль», конечно же, является главным секретом.
Один из способов, которым эти соли часто передаются, - это префикс в зашифрованном тексте.Это делает зашифрованный текст длиннее, чем открытый текст, но я не думаю, что это имеет значение в вашей методике выборки.
Кроме того, для полного обмена зашифрованными сообщениями необходимо передавать другие параметры шифрованиярасшифровщик.Вы можете подключить их к своим реализациям, как вы сделали здесь, но зависимость от воспроизводимости кажется слишком хрупкой.Это, конечно, что-то, что злоумышленник может воспроизвести, конечно, так что это не часть вашего секрета.
Возможно, вы захотите переосмыслить настройку алгоритма генерации ключей, чтобы она была более надежной.
Запоздалая мысль: То, что происходит в текущем подходе, заключается в том, что криптографически полезный ГСЧ используется таким образом, что вся случайность была удалена!Рекомендация проверить PBKDF2 и вывод ключа в целом является хорошей.