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

С под Linux

Войти
Регистрация
Восстановить пароль
 
failoob
0 / 0 / 0
Регистрация: 19.12.2016
Сообщений: 1
#1

Шифрование данных модуля диска в оперативной памяти - C Linux

19.12.2016, 00:36. Просмотров 327. Ответов 1
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане. Решил я попробовать запустить модуль RAM диска на ОС Linux. Исходный код здесь: ТУТ. Все работает, все команды выполняются. Но я захотел добавить к этому шифрование, то есть сделать так, чтобы данные отправляемые мной - шифровались. И тут то я и столкнулся с бедой, в языке программирования Си не силен и не могу понять, как же все таки произвести шифрование.

Вот код файла ram_device.c, здесь я нашел 2 функции, как я понял по названию отвечающие за запись и чтение файлов. Так же я догадался, что переменная buffer - это и есть передаваемые данные, и по сути нет ничего сложного, применить обычный XOR, но почему то он не работает, не шифруются у меня данные. XOR я делал таким образом: *buffer=*buffer^1; и таким *buffer=*buffer^*buffer; кроме того пробовал сдвигать бит *buffer=*buffer<<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
35
36
37
38
39
40
41
42
#include <linux/types.h>
#include <linux/vmalloc.h>
#include <linux/string.h>
#include <linux/errno.h>
 
#include "ram_device.h"
#include "partition.h"
 
#define RB_DEVICE_SIZE 1024 /* sectors */
/* So, total device size = 1024 * 512 bytes = 512 KiB */
 
/* Array where the disk stores its data */
static u8 *dev_data;
 
 
int ramdevice_init(void)
{
    dev_data = vmalloc(RB_DEVICE_SIZE * RB_SECTOR_SIZE);
    if (dev_data == NULL)
        return -ENOMEM;
    /* Setup its partition table */
    
    copy_mbr_n_br(dev_data);
    return RB_DEVICE_SIZE;
}
 
void ramdevice_cleanup(void)
{
    vfree(dev_data);
}
 
void ramdevice_write(sector_t sector_off, u8 *buffer, unsigned int sectors)
{
       //*buffer=*buffer^1; 
      //*buffer=*buffer^*buffer;
      //*buffer=*buffer<<1;     
    memcpy(dev_data + sector_off * RB_SECTOR_SIZE, buffer, sectors * RB_SECTOR_SIZE);
}
void ramdevice_read(sector_t sector_off, u8 *buffer, unsigned int sectors)
{
    memcpy(buffer, dev_data + sector_off * RB_SECTOR_SIZE, sectors * RB_SECTOR_SIZE);
}
У меня два вопроса, как все таки осуществить шифрование, и что значит эта запись
C
1
u8 *buffer
Зная как обращаться с этим типом данным я возможно что-то и смог сделать, но судя по всему из-за этого не знания я и хожу вокруг да около.
Так же функции записи и чтения встречаются в файле ram_block.c
C
1
2
3
4
5
6
7
8
9
10
11
12
        if (dir == WRITE) /* Write to the device */
        {
            //*buffer=*buffer^1; 
                       //*buffer=*buffer^*buffer;
                      //*buffer=*buffer<<1;     
            ramdevice_write(start_sector + sector_offset, buffer, sectors);
        }
        else /* Read from the device */
        {
 
            ramdevice_read(start_sector + sector_offset, buffer, sectors);
        }
Здесь я так понимаю происходит вызов этих функций и передача в них параметров. Соответственно возникает вопрос, шифровать здесь перед передачей параметров или шифровать в самом теле функции.
Буду очень рад вашей помощи и подсказкам. В Си я новичек, поэтому прошу не закидывать палками, если что не так.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2016, 00:36     Шифрование данных модуля диска в оперативной памяти
Посмотрите здесь:
Распределение оперативной памяти. C Linux
C Linux выборка данных из общей памяти
Добавление нового модуля оперативной памяти
При подключение модуля оперативной памяти компьютер не стартует
Visual Basic .NET Создание временного диска в оперативной памяти
Будут ли стабильно работать два модуля оперативной памяти с одинаковыми характеристиками но с разными чипами?
Реклама и ошибки в браузерах. Загрузка оперативной памяти и жесткого диска
Сбор и анализ данных в оперативной памяти C++
C++ Измерение скорости копирование данных в оперативной памяти!
Создание файла в оперативной памяти. Показ данных из TMemoryStream. C++ Builder
Передача текстовых данных из одного приложения в другое с использованием оперативной памяти Visual Basic .NET

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nimazzzy
Заблокирован
19.12.2016, 00:56     Шифрование данных модуля диска в оперативной памяти #2
Тебе нужно покурить про указатели.
Ответ Создать тему
Опции темы

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