Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.12.2016
Сообщений: 2
1

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

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане. Решил я попробовать запустить модуль 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);
        }
Здесь я так понимаю происходит вызов этих функций и передача в них параметров. Соответственно возникает вопрос, шифровать здесь перед передачей параметров или шифровать в самом теле функции.
Буду очень рад вашей помощи и подсказкам. В Си я новичек, поэтому прошу не закидывать палками, если что не так.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2016, 00:36
Ответы с готовыми решениями:

Подбор модуля оперативной памяти
Подскажите, пожалуйста, подойдет ли этот модуль(на фото) к плате gigabyte g41mt-s2pt(характеристики...

Добавление нового модуля оперативной памяти
Всем привет, столкнулся с проблемой после добавления нового модуля оперативной памяти: компьютер...

Отпал контакт от модуля оперативной памяти
Отпал контакт на планке , что делать ?. Ссыль на пик ниже , если не вдруг непонятно о чем речь....

Характеристики модуля оперативной памяти SO-DIMM
Здравствуйте, подскажите у меня есть два модуля оперативной памяти, один на 2Гб, второй на 8Гб,...

1
Заблокирован
19.12.2016, 00:56 2
Тебе нужно покурить про указатели.
0
19.12.2016, 00:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2016, 00:56
Помогаю со студенческими работами здесь

При подключение модуля оперативной памяти компьютер не стартует
Здравствуйте! При подключение второго модуля оперативной памяти(Kingston HyperX FURY Blue Series 4...

Чёрный экран при замене модуля оперативной памяти
Решил увеличить оперативку на своем ноутбуке с 4 Гб до 8 Гб. Купил новый модуль, поставил, включил...

Создание временного диска в оперативной памяти
Здравствуйте, коллеги. Вопрос на засыпку: возможно ли средствами VB.NET создать временный диск /...

Лучше 2 или 4 модуля оперативной памяти на плате где не работает 4-х канальный режим?
У моей платы не работает 4-х канальный режим но работает 2-х канальный, стоит ли покупать 4 плашки...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru