Оба подхода работают, но я бы сказал, что метод, использованный в первой из ваших ссылок, лучше всего подходит для "небольших" объемов данных, когда данные могут разумно вписываться во входные данные byte[]
(например, ключи, пароли и т. Д.).).
Метод из второй ссылки лучше подходит для «больших» объемов данных, когда загрузка всего ввода в память может быть невозможна, а потоковый подход более подходит (например, шифрование файла или данных).в потоке сети).
Учитывая ваши потребности, метод из первой ссылки, вероятно, уместен.
Что касается упоминания соли в вашей последней ссылке, он используется только дляseed PasswordDeriveBytes
, и не имеет прямого отношения к самому алгоритму AES.
Стоит отметить, однако, что для AES также есть своего рода «соль» в виде IV (вектора инициализации),Это просто случайные данные (которые должны каждый раз отличаться), которые могут храниться вместе с зашифрованным текстом и гарантируют, что даже при многократном шифровании одних и тех же данных выходные данные будут разными.
Учитывая это,метод, показанный в последней ссылке, следует использовать , а не , поскольку каждый раз он выдает один и тот же вывод, поскольку ключ и IV генерируются полностью из введенного пароля, тогда как вместо этого следует использовать IVслучайные байты.