![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Нужно зашифровать файл по алгоритму DES (желательно, он вроде проще всех в написании обертки в дотнете, хотя, в общем, все равно, какой использовать). Естественно, потом нужно его будет расшифровывать.
Я навалял вот такой код (код шифрования содран из MSDN, остальные навески мои, но их тут немного):
Вроде бы ничего хитрого, однако летит исключение на _des.CreateEncryptor(...) (в функции EncryptData). Ключ, как я прочитал в вики, должен быть длиной 56 битов. Ну я попробовал сформировать его так:
Конечно, может, это тупизм, и можно намного проще. Но я не нашел примеров, как именно. Подскажите, как правильно сформировать ключ. Плюс, нормаьлная ли это практика, юзать при создании енкриптора/декриптора одинаковые ключ и вектор инициализации? Про вектор тоже толком нигде не написано, как его правильно формировать. |
||||
|
|||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Нарооод, неужели никто не знает? Если совсем никаких подвижек в этой стороне нет, то дайте хотя бы работающий пример (или линк на него) шифрования и расшифровки текстового файла через другой алгоритм шифрования, TripleDES, например, или ему подобные. Топтаться на месте тоже не совсем хорошо, а ответа на свой вопрос в гугле я найти не смог.
|
|||
|
||||
Lunatic2009 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 1.7.2009 Репутация: 1 Всего: 3 |
Попробуйте так, это немного переделанный пример из msdn:
Насчет длины ключа(из msdn): Этот алгоритм поддерживает ключи длиной 64 бита. Насчет ключа и вектора(из msdn): Предположим, что Алиса и Боб являются двумя сторонами, которые хотят осуществлять связь по незащищенному каналу; они могли бы воспользоваться шифрованием с закрытым ключом следующим образом. Алиса и Боб соглашаются использовать некоторый определенный алгоритм (например, AES) с определенным ключом и вектором инициализации.Алиса пишет сообщение и создает сетевой поток, через который можно отправить это сообщение (например, именованный канал или канал электронной почты).Затем она шифрует текст с помощью ключа и вектора инициализации и по интрасети пересылает зашифрованное сообщение и вектор инициализации Бобу.Боб принимает зашифрованный текст и осуществляет расшифровку, используя ранее согласованные ключ и вектор инициализации.Если происходит перехват передаваемых данных, злоумышленник не может восстановить исходное сообщение, так как ему не известны ключ и вектор инициализации.В этой ситуации в секрете должен сохраняться только ключ.В более реалистичном случае либо Алиса, либо Боб создает закрытый ключ и использует шифрование с открытым ключом (асимметричное) для передачи другой стороне закрытого (симметричного) ключа. Это сообщение отредактировал(а) Lunatic2009 - 30.6.2010, 06:31 |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Сами-то проверяли? Не работает, разумеется. Переделывать тут ничего не надо, про работу самого алгоритма я пока ничего не говорил, исключение летит при попытке CreateEncryptor с сообщением "Размер ключа недопустим для данного алгоритма". В вашем примере создания ключа проблема осталась точно такой же.
|
|||
|
||||
Lunatic2009 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 1.7.2009 Репутация: 1 Всего: 3 |
Естественно проверял, пример рабочий... или по вашему
не 64 бита? Это сообщение отредактировал(а) Lunatic2009 - 30.6.2010, 23:05 |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Все получилось. Ваш пример действительно заработал, однако мой заработал тоже. Проблема была в том, что я не углядел, что в вашем коде в объявлении переменной-ключа была пропущена тройка (я перечислил от 1 до 9 все цифры).
+1 за помощь, сам бы не разобрался. Это сообщение отредактировал(а) mr.Anderson - 3.7.2010, 15:04 |
|||
|
||||
Lunatic2009 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 1.7.2009 Репутация: 1 Всего: 3 |
Прошу прощения, что не усмотрел, ошибаются все, но, все хорошо, что хорошо кончается...
![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |