Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2010, 04:19   #1
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос Шифрование данных [обсуждение]

Доброго времени суток!

Нужно было добавить возможность шифрования файлов в своей программе (она путешествовала вместе с флешкой).
Программа приобрела более нужные и полезные функции и была переписана с Delphi на С# , однако вохможность шифрования я так и не реализовал.

В философии криптографии и "аутентичности" я ещё совсем зеленый)
Алгоритм для шифрования данных ,найденный мною, использовал 2 функции, шифровку и некий обратный аналог - дешифровку. Для программы я счел удобным шифруемые файлы удалять а их место занимали зашифрованные с добавленным расширением , которое по желанию пользователя можно было добавить в систему(в реестр) и файлы с таким расширением открывались бы моей программой.

Но вот в чем беда, если пытатся дешифровать файл неверным паролем - получим кучку непригодного мусора, и для восстановления его в первоначальный вид потребовалось бы очень много усилий.

Получается программа должна была сообщать юзеру что пароль неверный.Но как сохранить верный пароль? Можно к файлу добавлять зашифрованный пароль , которым пользователь шифровал основной файл, но есть свои НО. Ведь шифровать пароль нужно ещё 1ним паролем, а его прийдется вшить в программу , и соттветственно вытащить его оттуда не составит больших проблем.И вся работа коту под хвост

В общем я остановился на 2х вариантах:
1) Шифровать пароль паролем , при попытке расшифровать файл, сначала открыть секцию с паролем, если пароль введенный юзером совпадает с результатом расшифровки тогда пароль верный и можно расшифровывать основной файл
2) В конец файла добавлять 2 секции. 1 аналогична 1вому варианту, 2рая - сгенерировать "стойкий" пароль для шифрации основного файла, и этот "стойкий" пароль зашифровать паролем юзера.
Дешифрация : Проверяем совпадают ли введенный пароль и дешифрация, дешифруем стойкий пароль, дешифруем файл.

Цвета обозначены.

Хотелось бы знать ваше мнение , услышать советы или идеи)

ПС. В дополнении к заголовку хотелось бы найти алгоритм , при котором шифруемый текст оставался читабельным и копируемым без всяких ˚ǒả█▐ , наверно некое подобие замены по таблице.
Изображения
Тип файла: jpg cr.JPG (3.6 Кб, 190 просмотров)

Последний раз редактировалось Lime; 21.06.2010 в 04:29.
Lime вне форума Ответить с цитированием
Старый 21.06.2010, 07:53   #2
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

почитай про алгоритм с открытым ключем... вроде называется RSA...думаю поможет))
BleStaR вне форума Ответить с цитированием
Старый 21.06.2010, 08:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
услышать советы или идеи
хм... Я бы попробовал делать так. Для шифруемого файла устанавливать некий заголовок, для которого вычислить и сохранить (в открытом виде) CRC сумму. Далее зашифровать этот заголовок (пусть например это будет имя проги, или какой-нить дивиз, придуманный тобой) согласно паролю (пароль-ключ), а далее при расшифровке сначала расшифровывать этот заголовок, и проверить полученную контрольную сумму. Если она совпадает с той что до зашифровки, значит пароль верен.
Это один и мульена способов. Я однажды так и поступил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2010, 08:20   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet
Для шифруемого файла устанавливать некий заголовок, для которого вычислить и сохранить (в открытом виде) CRC сумму.
+100

Добавлю ещё. Именно так и поступают архиваторы.
А хранить настоящий пароль внутри программы (В ЛЮБОМ ВИДЕ) - моветон и гарантированная "дырка" в безопасности.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.06.2010, 13:53   #5
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

Цитата:
Сообщение от Stilet Посмотреть сообщение
Для шифруемого файла устанавливать некий заголовок, для которого вычислить и сохранить (в открытом виде) CRC сумму. Далее зашифровать этот заголовок (пусть например это будет имя проги, или какой-нить дивиз, придуманный тобой) согласно паролю (пароль-ключ), а далее при расшифровке сначала расшифровывать этот заголовок, и проверить полученную контрольную сумму. Если она совпадает с той что до зашифровки, значит пароль верен.
Это один и мульена способов. Я однажды так и поступил.
Попытаюсь описать алгоритм:
Шифровка:
1)Генерируем строку( скажем 20 символов)
2)Вычисляем CRC
3)Шифруем файл
4)Прицепляем к файлу шифрованную строку
5)Прицепляем к файлу CRC строки

Дешифровка:
1)Дешифруем введенным паролем шифрованную строку (п4)
2)Вычисляем CRC , сравниваем с прикрепленной CRC (п5)
3)Если все отлично дешифруем файл введенным паролем.

Верно? Звучит довольно заманчиво, вот только всякие хеши crc и md5 пугают меня) что-то слишком заумное для понимания

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А хранить настоящий пароль внутри программы (В ЛЮБОМ ВИДЕ) - моветон и гарантированная "дырка" в безопасности.
От этого я и пытался избавится, но все-же для верности расшифровки самого файла необходимо сверить ключи. А идея зашифровать пароль паролем - одно разумное что пришло в голову

Цитата:
Сообщение от BleStaR Посмотреть сообщение
почитай про алгоритм с открытым ключем... вроде называется RSA...думаю поможет))
Я так понял RSA больше подходит для передачи информации (по сети к примеру) к тому-же скорость шифра маленькая.
Lime вне форума Ответить с цитированием
Старый 21.06.2010, 13:55   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Верно?
Да.
Цитата:
вот только всякие хеши crc и md5 пугают меня) что-то слишком заумное для понимания
А чего тут пугаться? Примеров в сети море и по тому и по другому.
Алгоритмы описаны - бери и пользуйся
Цитата:
А идея зашифровать пароль паролем
А потом это же зашифровать тем паролем который был до этого и "посолить" тем который был перед шифровкой шифровки того пароля который был перед тем что сейчас
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2010, 14:04   #7
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию



А разве это тривиальная задача? Высислить каким алгоритмом, ключем зашифрована информация) + сама информация и есть пароль) Как по мне - выглядит серьёзно

Цитата:
Сообщение от Stilet Посмотреть сообщение
А чего тут пугаться? Примеров в сети море и по тому и по другому.
Алгоритмы описаны - бери и пользуйся
Да пугаюсь то потому что не шарю в этом) А углублятся в эту ветку ради пары тройки средних программ для себя и знакомых - на это нету времени.
Вот например гуглил по теме шифрации текста, всяких примеров с xor'aми итд итп насмотрелся, а вот работать они не работают как должны, либо автор/копипастер не указал ньюансы и подводные камни. В итоге зашифровав случайную строку неким паролем, при дешифрации в 80% получаю потерю символов 5% вообще неверный результат 15% зашифрованная строка нечитабельна/не копируема.

Последний раз редактировалось Lime; 21.06.2010 в 14:11.
Lime вне форума Ответить с цитированием
Старый 21.06.2010, 14:05   #8
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Почитайте информацию о цифровой подписи, там тоже реализован алгоритм RSA (ИМХО он простой и эффективный, хотя есть и другие)
Не нужно создавать второй пароль! Да, этот пароль будет храниться на флешке, но в зашифрованном виде.
Примером может служить зашифрованный архив RAR, кто-нибудь пробовал его расшифровать? Хотя и пароль хранится в самом архиве, нельзя его оттуда вытянуть "холодным" способом, только перебором
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 21.06.2010, 14:09   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А разве это тривиальная задача?
Эти вещи тулят куда не лень. Плюнь на любую мало-мальски весомую программу - там зашипит аутентификация какая нить или шифрация, так что это уже всепрохаванные вещи
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2010, 14:27   #10
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Шифрование данных это с сжатием?
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
методы шифрование данных - строки ArniLand Общие вопросы C/C++ 1 20.05.2010 20:20
Шифрование данных didar_ Общие вопросы Delphi 2 07.11.2009 12:24
Шифрование данных frayerok Общие вопросы C/C++ 0 20.10.2008 22:35
Шифрование данных ASCII кодом на Assembler Cerebrate Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 26.02.2008 13:56
Хранение и шифрование данных Paul Hindenburg БД в Delphi 1 20.08.2007 09:04