Как позвонить Rijndaelalg.createencryptor в C # правильно при сохранении множества независимых файлов
-
17-09-2020 - |
Вопрос
В моей ситуации у меня есть ряд файлов, которые будут храниться на сервере. Каждый из этих файлов создается приложением C #, которое я пишу.
<Сильный> Фон: Для этого приложения количество времени, необходимое для шифрования, не важно, файлы, как правило, должны быть маленькими, и у нас есть много циклов ЦП, чтобы посмотреть (клиент - единственный компьютер, который шифрует или расшифровывает данные).
Каждый файл не связан и мне нужен контент, который будет защищен от Snooping по SysAdmin или любому, кто получает удержание жесткого диска (принять плохой парень)
Мое понимание Rijndaelalg - это солидный алгоритм для такого рода эксплуатации? Предполагая, что это информация правильно, как я правильно использовать функцию Rijndaelalg.createencryptor?
Юзабитель, который я хочу, чтобы мой пользователь ввести пароль, предположим, что пароль является хорошим паролем.
Мои вопросы
-
Как лучше всего преобразовать user interned string (c # 'string) в байт []? Я предполагаю, что я должен хвалить общаться с проблемой наличия 0 на всех других персонаже? Какой лучший способ сделать это преобразование?
-
Что я использую для IV? Это мое понимание Это ценность, которое должно быть заполнено (даже если MSDN говорит, что он в порядке, чтобы пройти «нулевой»). Что я использую для этого значения? Имейте в виду, что моя ситуация у меня есть куча независимых файлов, которые необходимо расшифровать независимо.
Что если IV хорошо известно, это проблема? (Могу ли я использовать хеш имена файла, поскольку это уникальное значение)
-
Есть ли лучший алгоритм, чем Rijndaelalg для шифрования многих независимых файлов, используя тот же пароль?
Решение
Q1.Я обычно использую метод GetBytes () класса UTF8 для преобразования строк в байтовые массивы.
Encoding.UTF8.GetBytes(myString)
.
Q2.Каждый раз, когда вы создаете экземпляр класса Rijndaelmaned, IV случайно генерируется для вас (доступно с использованием свойства IV).Вы можете повторить это снова, вызывая метод Generateiv ().
Как вам нужен этот IV, чтобы расшифровать данные, вам может быть лучше хранить это IV где-то вместо уникального IV на файл.Если вы зашифруете все свои файлы с помощью статического IV, обязательно установите IV при создании нового экземпляра класса Rijndaelmaned в любое время, которое вы расшифруете файл.
Q3.Rijndaelmaned / AES - самый безопасный алгоритм там, я бы не использовал ничего, что ELS.