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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.83
qwerty181
1 / 1 / 0
Регистрация: 03.01.2011
Сообщений: 5
#1

Открытие файла в бинарном режиме - C++

03.01.2011, 01:33. Просмотров 5999. Ответов 6
Метки нет (Все метки)

Помогите разобраться. Необходимо реализовать алгоритм шифрования AES128. Всё сделано, только шифруются не файлы, а ввожу в ручную 32 шестнадцатеричных числа. А необходимо шифровать файлы. Не знаю как считать данные в массив, состоящий из 128ми чисел (0 или 1), или в массив состоящий из 32х чисел (шестнадцатеричных).

C++
1
2
3
4
5
FILE *stream;
int block[128];
 
stream = fopen("file.txt", "rb");
fread((char *)block, 16, 1, stream);.
Что дальше я хз.
Надо 128 бит передать в массив. Помогите это сделать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1643 / 1271 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
03.01.2011, 05:55     Открытие файла в бинарном режиме #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<fstream>
#define N 128
using namespace std;
 
int main()
{
    char c[N];
    short n[sizeof(c)];
    ifstream ifs("file.txt");
    ifs>>c;
    for(int i=0;i<sizeof(c);i++){
        n[i]=c[i]-48;
        cout<<n[i];
    }
}
qwerty181
1 / 1 / 0
Регистрация: 03.01.2011
Сообщений: 5
04.01.2011, 18:04  [ТС]     Открытие файла в бинарном режиме #3
как я понимаю тут сразу весь файл передается в память, а можно по частям его открывать, использовать fopen а дальше fread. Файлы то большие могут быть.

igorrr37 уточните пожалуйста, в каком формате хранятся данные в массиве, точнее какие значения имеют числа хранящиеся в массиве? Как я понимаю здесь он не в бинарном режиме открывается.
igorrr37
1643 / 1271 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
04.01.2011, 19:34     Открытие файла в бинарном режиме #4
по частям - ф-ция read(), считывает без форматирования
http://www.cplusplus.com/reference/i.../istream/read/
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    char ch[128];
    ifstream ifs("file.txt", ios::binary);
    ifs.read(ch, 128);    //считать в ch 128 байт
}
qwerty181
1 / 1 / 0
Регистрация: 03.01.2011
Сообщений: 5
04.01.2011, 23:52  [ТС]     Открытие файла в бинарном режиме #5
Цитата Сообщение от igorrr37 Посмотреть сообщение
по частям - ф-ция read(), считывает без форматирования
http://www.cplusplus.com/reference/i.../istream/read/
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    char ch[128];
    ifstream ifs("file.txt", ios::binary);
    ifs.read(ch, 128);    //считать в ch 128 байт
}

читать нужно по блокам 128бит, а не 128байт. А массив типа int, или как здесь char должен содержать биты информации. Т.е. 1 или 0.

char ch[128];

Здесь содержится символы. А как это перевести в двоичный режим?
igorrr37
1643 / 1271 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
05.01.2011, 06:19     Открытие файла в бинарном режиме #6
128 бит - 16 байт, а содержит он байты а не символы, просто при выводе на экран они расшифровываются как символы. Вот первый байт файла в 10чном виде
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    char ch[16];
    ifstream ifs("file.txt", ios::binary);
    ifs.read(ch, 16);
    cout<<(int)ch[0];
}
а вот в 16 ричном
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    char ch[16];
    ifstream ifs("file.txt", ios::binary);
    ifs.read(ch, 16);
    cout<<hex<<(int)ch[0];
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2011, 13:59     Открытие файла в бинарном режиме
Еще ссылки по теме:
C++ Не удаётся открыть файл в бинарном режиме
Как прочитать файл в бинарном режиме по 32 байта C++
Поиск числа в файле, открытым в бинарном режиме C++
C++ Прочитать файл в бинарном режиме с записью результата в string
Как открыть файл для чтения в БИНАРНОМ режиме? C++

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

Или воспользуйтесь поиском по форуму:
qwerty181
1 / 1 / 0
Регистрация: 03.01.2011
Сообщений: 5
05.01.2011, 13:59  [ТС]     Открытие файла в бинарном режиме #7
Цитата Сообщение от igorrr37 Посмотреть сообщение
128 бит - 16 байт, а содержит он байты а не символы, просто при выводе на экран они расшифровываются как символы. Вот первый байт файла в 10чном виде
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    char ch[16];
    ifstream ifs("file.txt", ios::binary);
    ifs.read(ch, 16);
    cout<<(int)ch[0];
}
а вот в 16 ричном
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    char ch[16];
    ifstream ifs("file.txt", ios::binary);
    ifs.read(ch, 16);
    cout<<hex<<(int)ch[0];
}

Спасибо igorrr37, теперь разобрался!))
Yandex
Объявления
05.01.2011, 13:59     Открытие файла в бинарном режиме
Ответ Создать тему
Опции темы

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