Как устранить ошибку при реализации шифрования / дешифрования DES в asp.net? - PullRequest
1 голос
/ 16 сентября 2011

Я пытаюсь реализовать шифрование DES в приложении asp.net по указанной ссылке:

Шифрование / дешифрование DES

согласноданный код работает нормально, но если я добавлю еще один символ в байтовую переменную, его исключение будет

static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool"); //Working fine
static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCoola"); //throwing exception

enter image description here

У кого-нибудь есть идеи, как решить этот вопрос?* Есть ли ограничение в 8 символов в шифровании DES?

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

DES поддерживает 56-битные ключи, поэтому вы не можете добавить еще одну. На самом деле 56 бит = 7 байтов, поэтому я предположил, что "Zerocool" работает, потому что все символы являются стандартными ASCII, и те, которые занимают всего 7 бит каждый.

Как говорится ...

  1. DES - действительно старый шифр. 56-битный ключ может быть легко взломан современным домашним компьютером. Вы должны использовать шифры, которые поддерживают большие ключи, такие как AES.

  2. Я прочитал это в конце статьи:

Используя DES, вы можете зашифровать или расшифровать пароли пользователей или что-то еще, а также можете углубиться в алгоритм, если хотите.

Что меня обеспокоило. Пароли никогда не должны быть зашифрованы. На основании одного только этого заявления я бы проигнорировал всю статью как бесполезную.

1 голос
/ 16 сентября 2011

Линия:

static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool");

Это не байтовый массив строки, которую вы пытаетесь зашифровать, это ключ для процесса шифрования.

Используется вместе с вектором инициализации (IV) при настройке шифрования.

writer.Write(originalString);

Это то место, куда вы должны смотреть, запрашивая вывод шифрования.

...