Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716

Посоветуйте способ "защиты от дурака"

15.02.2011, 07:33. Показов 3517. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возник такой вопрос.
Нужно сделать программу, которая бы хранила различную информацию в файле формата XML. С возможностями работы с XML в C# вроде разобрася, теперь такая задача - нужно, что бы пользователь не мог просто взять, открыть файл блокнотом и посмотреть содержимое.
Можно ли как-то его зашифровать или "испортить"? Что бы например, открывая блокнотом, я видел всякие закорючки, а программа нормально всё из него читала?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2011, 07:33
Ответы с готовыми решениями:

Способ защиты лицензии программы
Доброго времени суток. Стоит следующая задача: Есть программный продукт написанный на .Net 4. Продажа предполагается по 1 экз. на 1...

Метод защиты от дурака
Всем привет, у меня есть код ну нет защиты от ввода букв с клавы((, помогите пожалуйста сделать эту защиту. Вот код: #include...

Функция защиты от дурака
Последние несколько часов пытаюсь решить вроде как простую задачу. С консоли необходимо ввести число (нам подходит любое вещественное...

14
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.02.2011, 07:54
Шифр сделать можно, но не проще ли тогда отказаться от xml и зафигачить бинарник? Те же теги вполне могут быть и числовыми и фиг тогда блокнот поможет.
1
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
15.02.2011, 08:00  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
отказаться от xml и зафигачить бинарник
Спасибо за быструю реакци. Но не совсем понял. Можно подробнее сказать, что имелось ввиду?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.02.2011, 08:12
Имелось ввиду, что все теги, свойства, и не текстовые значения должны получить явные числовые коды и пиши в файл их. Если защита нужна именно от дурака, то *.DAT лучше шифрованного *.XML в том плане, что сам не запутаешься в ключах и алгоритмах.

Добавлено через 4 минуты
Да и в том случае, если встанет задача обмена данными с чужим софтом, можно будет обменяться спецификациями фактических форматов, а то и опубликовать свою спецификацию. Если же шифровать, то открывать ключ и алгоритм чревато блокнотом, который всё прочитает, но юзверь там всё равно нифига не поймёт, а редактировать будет. Бинарник же читается и редактируется только специализированным софтом, что гарантирует валидность всех версий.

Добавлено через 1 минуту
Но если уж охота сделать шифр, то подмени кодировку. Причём, не на koi8, а на кодировку собственного сочинения.
1
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
15.02.2011, 08:19  [ТС]
taras atavin, спасибо за информацию, правда про бинарные файлы так и не понял до конца, ни разу так не делал, так что надо будет более подробно разузнать о том, как можно это делать.

Однако, тут всплыла информация, что XML-синтаксис обязателен, значит придётся отталкивать именно от него...
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.02.2011, 08:52
Преобразуйте значения в байт код, и запишите его в виде строки
к примеру 13 - 0D 00 00 00
1
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
15.02.2011, 09:00  [ТС]
Konctantin, а можно весь файл xml хранить в виде файла двоичных значений, как вы показали?
13 - 0D 00 00 00
Что бы каждый символ так сохранялся?
И если такое возможно и я не пишу чушь, то есть ли в языке возможности для "кодирования" и "раскодирования" такого файла?
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.02.2011, 09:36
Стандартных средств нет, но их не сложно реализовать самому.

получить байт код:
C#
1
string byesStr = string.Join(" ", Converter.GetBytes("что-то").Select(n=>n.ToString("X2")));
Получить строку обратно:
C#
1
string normalStr = Encoding.UTF8.GetString(value.Split(' ').Select(n=>byte.Parse(n,System.Globalization.NumberStyles.HexNumber)).ToArray());
Зы. в синтаксисе могут быть ошибки, писал прямо в браузере
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
15.02.2011, 14:36
Вот небольшой пример бинарной сериализации:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO.Compression;
 
namespace Serialization
{
    class Program
    {
        static void Main(string[] args)
        {
            string st = "";
            int a = 32000;
            MemoryStream ms1 = new MemoryStream();
            MemoryStream ms2 = new MemoryStream();
            Console.WriteLine("Введите строку:");
            st = Console.ReadLine();
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(ms1, a);
            bf.Serialize(ms2, st);
            GZipStream zip = new GZipStream(ms2, CompressionMode.Compress);
            byte[] buffer = new byte[st.Length];
            zip.Write(buffer, 0, buffer.Length);
 
            Console.WriteLine("Результаты сериализации:");
            ms1.Position = 0;
            ms2.Position = 0;
            Console.WriteLine("{0}", (int)bf.Deserialize(ms1));
            Console.WriteLine("{0}", (string)bf.Deserialize(ms2));
            byte[] b = BitConverter.GetBytes(a);
            Console.ReadKey();
        }
    }
}
Всё классом BinaryFormatter. Быстро и удобно. Файл меньше места занимает.

Добавлено через 3 минуты
А зашифровать данные даже в XML - полно способов. Если размер файла не критичен - можно приводить все данные в байтовое представление и записывать только числа как обычную строку через пробел, а потом обратно. Но есть и на много оптимальные способы.
1
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.02.2011, 14:46
А зашифровать данные даже в XML - полно способов. Если размер файла не критичен - можно приводить все данные в байтовое представление и записывать только числа как обычную строку через пробел, а потом обратно. Но есть и на много оптимальные способы.
а я про что писал?

Но лучше всего использовать обычное шифрование, и не придумывать велосипед.
1
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
15.02.2011, 14:57  [ТС]
Спасибо вам за ответы, кажется мне нужно для начала подучить матчасть...
Никто не подкинет какой-ниюудь материал по сериализации?

Но лучше всего использовать обычное шифрование, и не придумывать велосипед.
А обычное это какое? Имеется ввиду что-то вроде шифрования в base64 и обратно?
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.02.2011, 19:06
Почитайте, это вам поможет
http://msdn.microsoft.com/ru-r... S.90).aspx
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
15.02.2011, 20:29
Хотя бы делать для каждого байта исключающее ИЛИ с каким-то ключем. Думаю, будет достаточно, если надо защитить только от блокнота (от дураков)
1
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
16.02.2011, 07:10  [ТС]
Спасибо, ребята, вы дали полезную информацию для дальнейшего изученя, решил сделать через исключающее ИЛИ.
0
16.02.2011, 12:42

Не по теме:

Успеха!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2011, 12:42
Помогаю со студенческими работами здесь

Реализация защиты ввода от дурака
Доброго времени суток! Имеется тривиальная программа var a:byte; begin Readln(a); end. И необходимо реализовать защиту...

Pascal!? Функция защиты от дурака???
Нужен пример функции как сделать защиту от неправильного ввода, напр. нужно ввести число, а если какой-нть "чайник" введет...

Способ защиты документа от сохранения
Здравствуйте, меня интересует вопрос: можно ли защитить документ от сохранения, но можно было бы его редактировать? История: делаю на...

Красивый способ защиты базы данных Аксесса!
Как защитить MDB-базу Аксесса - тема старая и избитая. Все уже давно сошлись на том мнении, что самое глупое решение - это установка...

Как и где взять программу для защиты двд видеодиска от копирования. Хоть какой нибудь способ?
Собираюсь продавать диски. Мой собственный продукт.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru