![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Yogurt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.8.2009 Репутация: нет Всего: нет |
Есть файл txt, в котором лежит полезная информация для обработки данных с помощью написанной программы.
Как закодировать или зашифровать файл, чтобы пользователь не мог его посмотреть, а если и смог бы, то ничего бы в нём не понял. Файл объёмом 150 КБ, у файла есть повторяющаяся каждую строчку структура (короче там лежит много параметров с множеством настроек для каждого: 1 строка - 1 параметр) Поставил настройку SetFileAttributes(FileName, FILE_ATTRIBUTE_HIDDEN); но это мало помогает Что ещё можно сделать и есть ли функция установки пароля на файл P.S. В основном прогаю в MFC, но в данном случае на код это оказывает посредственное влияние |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
Yogurt, задачи :
1) определить от кого скрываемся 2) определить как шустро должны выполняться шифрование\расшифровка 3) определить как раскрывать информацию при работе? Частями или можно целиком? |
|||
|
||||
| Yogurt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.8.2009 Репутация: нет Всего: нет |
1) Скрываем информацию от пользователей
2) Должно открываться шустро. Размер файла будет максимум около 200 Кб, поэтому обычно помещается в оперативную память. Думаю, небольшие преобразования перед этим не повлияют на скорость работы машины 3) Раскрывать целиком Я подумал, что можно не сам файл шифровать, а его содержимое. Типа брать каждый байт и менять его левую и правую части Наверное, многие уже сталкивались с этим. Как решили задачу? С какими проблемы обнаружились? |
|||
|
||||
| baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
поэт...
э-э... дайте определение, что есть 'сам файл', а что - 'его содержимое'
Для начала нужно определить требуемую криптостойкость. Если от пионэров закрываться, можно начать с простейшей подстановки в стиле пляшущих человечков. типа A->B, B->C и т.д. тут |
||||||
|
|||||||
| Yogurt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.8.2009 Репутация: нет Всего: нет |
По-поводу "сам файл, или его содержимое" - файл можно открыть стандартными средствами Винды. Мне интересно, можно ли программно заблокировать файл от Ворда, Экселя и, если получится, блокнота?
По-поводу пляшущих человечков - надеялся, что кто-то уже с этим сталкивался, и расскажет, какие шишки набил. В основном интересует скорость работы с файлом, так как в программе предусмотрено его редактирование. На счёт содержимого - на файл можно смотреть, как на набор байт, а можно - как на набор символов. Как лучше для кодирования данных? |
|||
|
||||
| baldina |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
А что такое байт? А это - символ из алфавита (0..255). Так что для кодирования без разницы...
конечно. Вам ссылку дали, оттуда ноги растут на другие ссылки... С этим сталкивались столько, что написаны горы литературы. А что касается простейшей реализации пляшущих человечков - это на 10 мин работы. Для начинающих - час.
можно. хотя сложно и ненадежно (на всякий винт с резьбой найдется...) шифруйте, и будет вам счастье. простейший способ - сделайте в цикле для каждого символа/байта файла операцию кодирования:
раскодирование - той же самой операцией. а пока юзеры будут ломать эту "защиту" изучайте литературу |
||||||||
|
|||||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Это как? В смысле, что бы при попытке открыть файл Блокнотом, тот с грохотом падал и уносил с собой пол Винды? |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
-------------------- вопросов больше чем ответов |
|||
|
||||
| Yogurt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.8.2009 Репутация: нет Всего: нет |
Решил вопрос следующим образом:
Создал кодирующий/декодирующий класс. При открытии файла или изменении его содержимого все символы (строками или по отдельности) "проходят" через этот класс. Причём символы шифруются одним, двумя или тримя символами Это не очень шустро, но пару секунд пользователь потерпеть может Спасибо всем, кто отписался. Для baldina : Байт, это не символ, это 8 бит. Символ по значению в разных кодировках значит разное. Как вариант - думал над побитовым считыванием байта, и затем поменять местами первую и вторую половину байта |
|||
|
||||
| Master01 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 22.8.2007 Репутация: 2 Всего: 2 |
Я думаю, имелось ввиду, что алгоритмам шифрования, в принципе, по барабану. Они работают с битами, точнее с последовательностями некоторой длины, а уж во что те биты складываются их не интересует. |
|||
|
||||
| baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
Yogurt,
Байт Алфавит Добавлено через 10 минут и 39 секунд
С реализацией все понятно. А с конечной целью не очень. Какие угрозы вы предотвращаете? Какой ущерб хотите предотвратить? тут почитайте и тут для начала... а на "3" вопрос такой: какое отношение имеет фраза
к шифрованию файла? |
||||||
|
|||||||
| bass |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: нет Всего: 2 |
Зашифровал буфер расшифровал WinAPI А чтоб вордом нельзя было открыть CreateFile но только когда твое приложение запушено с флагом доступ в монопольном режиме..... |
|||
|
||||
| Yogurt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.8.2009 Репутация: нет Всего: нет |
Забил на шифрование из за путаницы при исправлении файла, и сделал маленькую прогу. Текст файла лежит в файле txt, Unicode. Меняю местами все символы (Unicode = DWORD). Так как меняются ещё и символы переноса и окончания строки \n и \r, то после преобразования становится всё совсем непонятно. Всё восстанавливается тем же кодом.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Способ 'шифровки' взламывается наблюдением содержимого 'зашифрованного' файла в hex виде где то секунд за 5-10. 'Расшифровщик' пишется с нуля минут за 10.
Резюме - использовать в программе уровня выше 'Hello world!' категорически запрещается. |
|||
|
||||
| Yogurt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.8.2009 Репутация: нет Всего: нет |
Прислушался к совету коллег, и попробовал зашифровать с помощью криптостойкого алгоритма, но в результате понял, что наиболее просто, это развернуть каждый байт (в моём случае - каждые 2 байта, тк Юником) в обратном направлении. Алгоритм получился симметричным (им зашифровываю и расшифровываю)
Собственно вот:
P.S. Делаю, как я уже писал, в МФК, но переделать по fopen() и тп не составит труда |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |