![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
tusha |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
добброго времени суток all
задался задачей написать класс для хранения настроек программы - в том числе юзернейм/пароль. пароль ес-но в зашифрованом виде - чтоб пользователь при редактировании конфига просто так прочитать его не мог. при загрузке программы - считывается конфиг и осуществляется подключение к MSSql Server. вырезка кода:
вот собственно сами данные которые собираемся шифровать:
шифрование/дешифрование на моей машине проходят наура, однако при попытке перенести конфиг и запустить на другой машине - при дешифровке вылетает эксепшн - чтото типа DecryptedData is null и поэтому отваливается ByteConverter.GetString(DecryptedData); возможно надо указать какието дополнительные ключи? прошу совета |
||||
|
|||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
цепочка вызовов метода - очень короткая. Дебаггали?
если DecryptedData is null => RSADecrypt() не сработал => или passord пустой (проверить серилизацию) или RSAParameters и т.д. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
tusha |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
массив byte[] password при десереализации заполяется нормально , проверял при дебаге. параметры ключей не меняются (хм.. ключ для шифра/дешифра это же csp.KeyContainerName - я правильно понял??).
возвращает null-овый массив байт сереализацию делаю так:
|
||||
|
|||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
У меня все работает. На двух машинах. С разными культурами и операционными системами.
Если, хотите, присылайте архив через личное сообщение (PM). Посмотрю. Конфиденциальность гарантирую )) Кстати, username & connection strings можно заменить перед отправкой. Они все равно через декриптор не проходят.. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
tusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
видать уже поздно - не нашел как в ЛС прикрепить файл
![]() выкладываю тут класс+xml Добавлено через 1 минуту и 23 секунды блин, не прикрепилось) Добавлено через 5 минут и 31 секунду пароль кстати temp123 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
tusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
хм, только что прочитал что использование CspParameters походу делает алгоритм аппаратно/софтвенно зависимым) - что мне впринципе не надо) буду завтра ковырять
|
|||
|
||||
tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Думаю не в этом причина. Давно не занимался криптографией (да и опыта собственно большого не было)) ). Не обратил внимание на то, что алгоритм то - Ассиметричный
Т.е. - открытый и закрытый ключ. Вы - издатель. Я - клиент. Я не могу прочитать Вашу информацию без ключа. Закрытый ключ есть только у издателя информации, открытый - у обоих. Клиент может использовать полученный (когда-то) открытый ключ чтобы расшифровать информацию, зашифрованную издателем с помощью закрытого ключа. Т.о. нужно как-то сохранить ключи и передать их клиенту. Наверное имеет смысл использовать sn.exe Но для нашего случая, для простоты, я просто конвертирую ключи в XML и серилизую их в тот же XML, где и данные. В свойствах LibraSettings добавьте
Для расшифровки клиенту нужны только ключи, испортированные из xml-строки. Было сложно переключаться между свойством Password и методами RSAEncrypt\RSADecrypt поэтому я объединил их со свойством.
Key = RSA.ToXmlString(true); - я экспортирую оба ключа (и открытый и закрытый). Если наш вариант сработает, поставтьте параметр false - клиенту нужно передавать только открытый ключ. Ну и, конечно, ключ не вместе с данными нужно будет передавать.. Например, отдельный файлом, в процессе инсталляции клиентского модуля. Это сообщение отредактировал(а) tol05 - 21.11.2009, 12:58 Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() -------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
tusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
![]() однако мне так думается , ключ надо будет хранить постоянно - ведь я им буду пользоваться при каждой загрузке программы для расшифровки пароля. ес-но пароль будет меняться - когда пользователь захочет его изменить. и я так понимаю этот же ключ будет использоваться при кодировании нового пароля. PS: против лома нет приема, данный вариант секьюрности мне впинципе подходит- когда подключится к mssql нельзя будет простым копипастом) |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
exactly )))
ну и отлично. в конце концов - придумать где хранить ключ - это не big deal кстати, может быть стоит подумать над симметричным шифрованием? Тогда проблем с ключами будет меньше -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
http://weblogs.asp.net/jgalloway/archive/2...onfig-file.aspx -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
tusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
я давно знал что все велосипеды уже 100 раз изобретены до меня)
но я чтото приобрел+ возможно данная ветка комуто поможет) |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |