Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Techno
Вирусоборец
317 / 119 / 2
Регистрация: 15.07.2011
Сообщений: 293
#1

Собственный формат файла - C++

09.04.2013, 15:56. Просмотров 500. Ответов 7
Метки нет (Все метки)

Здравствуйте!!!
Есть программа, для нее нужна некая БД в виде файла. Как сделать, чтобы этот файл понимала только программа, а в блокноте он был нечитабельным?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 15:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Собственный формат файла (C++):

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

Найти формат неизвестного файла - C++
Задача звучит так: "Для файлов нескольких (не менее 3) широко используемых форматов составить базу данных, содержащую статистические...

Сохранение пикселей в графический формат файла - C++
Добрый день :) на этот раз передо мной встала вот такая задачка: необходимо разбить картинку на несколько частей и каждую часть сохранить...

Перевод тексового файла в бинарный формат - C++
Добрый день! Необходимо открыть текстовый файл, содержание которого не известно, и перезаписать его в новый файл, но данные записывать...

Как создать свой формат файла на Visual C++ Win32, Или С# формой - C++
Как создать свой формат файла на Visual C++ Win32, Или С# формой, чтоб откривался только єтой прогой и сохранялся этой прогой честно...

Собственный манипулятор - C++
Здорова господа! Я пытаюсь создать свой собственный манипулятор, который будет принимать основу числа: десять шестнадцать и два и само...

7
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
09.04.2013, 15:59 #2
Techno, нужно записывать туда данные в двоичном виде. Работа с бинарными файлами. Шифрование получится, благодаря порядку записи разных типов разных переменных.
0
Байт
Эксперт C
16136 / 10414 / 1549
Регистрация: 24.12.2010
Сообщений: 19,713
09.04.2013, 16:01 #3
Один из вариантов - прибавьте к каждому символу +1 по модулю 256
Можно первые 20 байтов забить какой-нибудь двоичной ерундой.
Ну а дальше - насколько фантазии хватит...
1
Techno
Вирусоборец
317 / 119 / 2
Регистрация: 15.07.2011
Сообщений: 293
09.04.2013, 19:13  [ТС] #4
А можно примерчик?
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
09.04.2013, 21:22 #5
Цитата Сообщение от Techno Посмотреть сообщение
А можно примерчик?
поддерживаю
0
anmartex
...
1706 / 1199 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
10.04.2013, 09:37 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
А я бы воспользовался банальным xor шифрованием. Причём 1-го символа для того, чтобы просто текст не было видно, на мой взгляд, будет достаточно. Пример xor по символу '1':
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
#include <iostream>
#include <fstream>
#include <cstring>
 
char* Code(char* begin, char* end, char key)
{
    for (char* cursor = begin; (cursor < end); ++cursor)
    {
        *cursor ^= key;
    }
 
    return begin;
}
 
int main()
{
    char text[] = "Hello World";
    size_t nText = sizeof(text) / sizeof(*text);
 
    // Записываем
    std::ofstream fout("test.bin", std::ofstream::binary);
    fout.write(Code(text, text+nText, '1'), nText);
    fout.close();
 
    std::fill(text, text+nText, '\0');
    //Читаем
    std::ifstream fin("test.bin", std::ifstream::binary);
    fin.read(text, nText);
    fin.close();
 
    std::cout << Code(text, text+nText, '1') << std::endl;
 
    return 0;
}
Файл:
Собственный формат файла

Терминал:
Название: 1111.PNG
Просмотров: 71

Размер: 1.9 Кб

P.S.: но можно и усложнить используя ключ длиною более чем 1 символ .
3
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
10.04.2013, 13:15 #7
anmartex, спасибо огромное!!!
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.04.2013, 13:18 #8
Цитата Сообщение от Techno Посмотреть сообщение
а в блокноте он был нечитабельным?
Он будет не читабелен, если использует не знакомую блокноту кодировку, будет зашифрован, или вообще будет бинарным.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2013, 13:18
Привет! Вот еще темы с ответами:

Реализовать собственный cin - C++
Я короче хочу реализовать собственный cin. Просто оно медленно работает. И в этом проблема. typedef long long ll; struct Cin{ ...

Собственный класс итератора - C++
Добрый день! Пишу сейчас одну библиотеку (не использующею STL и другие библиотеки) и для контейнеров решил написать класс итератора: ...

собственный неожиданны обработчик - C++
возникла проблема с обработкой исключений. В теории все понятно, а на практике получается бред. Не работают даже примеры, найденный на...

Собственный класс-итератор - C++
Создаю класс-итератор для класса Студенты. Сам класс студенты: #ifndef STUDENTS_H #define STUDENTS_H #include &lt;string&gt; ...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
10.04.2013, 13:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru