Какое шифрование следует использовать при кодировании и как оно влияет на ключи и векторы инициализации? - PullRequest
4 голосов
/ 09 июля 2010

Я разбираюсь в шифровании и о том, как кодирование влияет на генерацию ключей и векторов инициализации.

Я работаю с TripleDESCryptoServiceProvider, для которого требуется 24-байтовый ключ и 8-байтовый вектор инициализации с использованием кодировки ASCII.Если я решу использовать другую кодировку, как это повлияет на генерацию ключа и вектор инициализации?

Какую кодировку следует использовать вместо UTF8 / 16/32?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 июля 2010

Параметры шифрования совершенно не связаны с выбранной вами кодировкой. Параметры шифрования всегда определяются в байтах. Кодирование связано с переводом символов в байты, а байтов обратно в символы. Единственное место, где они «сталкиваются», - это использование паролей для генерации ключей шифрования. Вы должны использовать класс, разработанный специально для этого, например Rfc2898DeriveBytes .

В большинстве случаев, когда я вижу кодировку ASCII, программист лучше обслуживал бы кодировкой UTF8. Кодировка UTF8 кодирует и декодирует символы ASCII точно так же, как кодировка ASCII, но также правильно и эффективно кодирует все остальное в Unicode. Используйте кодировку ASCII, если вам нужно сгенерировать исключение, когда встречается не-ASCII символ.

0 голосов
/ 09 июля 2010

Я не эксперт, но TripleDES больше не считается достаточно безопасным. Microsoft рекомендует использовать AES 256 бит и выше. Я не думаю, что кодировка текста влияет на силу шифрования, только на длину ключа «обычный текст» и IV.

...