Как позвонить Rijndaelalg.createencryptor в C # правильно при сохранении множества независимых файлов

StackOverflow https://stackoverflow.com/questions/3273672

Вопрос

В моей ситуации у меня есть ряд файлов, которые будут храниться на сервере. Каждый из этих файлов создается приложением C #, которое я пишу.

<Сильный> Фон: Для этого приложения количество времени, необходимое для шифрования, не важно, файлы, как правило, должны быть маленькими, и у нас есть много циклов ЦП, чтобы посмотреть (клиент - единственный компьютер, который шифрует или расшифровывает данные).

Каждый файл не связан и мне нужен контент, который будет защищен от Snooping по SysAdmin или любому, кто получает удержание жесткого диска (принять плохой парень)

Мое понимание Rijndaelalg - это солидный алгоритм для такого рода эксплуатации? Предполагая, что это информация правильно, как я правильно использовать функцию Rijndaelalg.createencryptor?

Юзабитель, который я хочу, чтобы мой пользователь ввести пароль, предположим, что пароль является хорошим паролем.

Мои вопросы

  1. Как лучше всего преобразовать user interned string (c # 'string) в байт []? Я предполагаю, что я должен хвалить общаться с проблемой наличия 0 на всех других персонаже? Какой лучший способ сделать это преобразование?

  2. Что я использую для IV? Это мое понимание Это ценность, которое должно быть заполнено (даже если MSDN говорит, что он в порядке, чтобы пройти «нулевой»). Что я использую для этого значения? Имейте в виду, что моя ситуация у меня есть куча независимых файлов, которые необходимо расшифровать независимо.

    Что если IV хорошо известно, это проблема? (Могу ли я использовать хеш имена файла, поскольку это уникальное значение)

  3. Есть ли лучший алгоритм, чем Rijndaelalg для шифрования многих независимых файлов, используя тот же пароль?

Это было полезно?

Решение

Q1.Я обычно использую метод GetBytes () класса UTF8 для преобразования строк в байтовые массивы.

Encoding.UTF8.GetBytes(myString)
.

Q2.Каждый раз, когда вы создаете экземпляр класса Rijndaelmaned, IV случайно генерируется для вас (доступно с использованием свойства IV).Вы можете повторить это снова, вызывая метод Generateiv ().

Как вам нужен этот IV, чтобы расшифровать данные, вам может быть лучше хранить это IV где-то вместо уникального IV на файл.Если вы зашифруете все свои файлы с помощью статического IV, обязательно установите IV при создании нового экземпляра класса Rijndaelmaned в любое время, которое вы расшифруете файл.

Q3.Rijndaelmaned / AES - самый безопасный алгоритм там, я бы не использовал ничего, что ELS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top