Шифрование с помощью умножения матриц
Работа над проектом колледжа для простого шифрования на основе матричного умножения.
План проекта таков;
текстовый файл в матрицу, умноженный на матрицу ключей шифрования = зашифрованный файл.
Зашифрованный файл в матрицу, умноженный на обратную матрицу ключей = Расшифрованный файл.
Но я хочу пойти немного дальше и иметь возможность создавать любые файлы (текстовые, mp3, gif и т. Д.).
Я часами искал, пытаясь решить эту проблему, и начинаю немного расстраиваться.
Лучший (и единственный) способ, который я могу придумать, - это чтобы программа считывала необработанный двоичный файл и выполняла шифрование.
Итак -> вопросы:
Могу ли я извлечь сырой двоичный файл из файла, поместить в матрицу, выполнить умножение матрицы и (по существу) записать двоичный файл в файл?
Кроме того, какова жизнеспособность такого метода на разных компьютерах и платформах? (Я думаю, что, может быть, если я преобразую из двоичного в int и при расшифровке преобразую обратно, это может измениться - разные размеры на разных компьютерах и т. Д.?)
Кроме того, я приветствую мнение о лучших решениях
---> Но основной алгоритм должен основываться на умножении матриц.
Мой код:
int writetomatrix(int current_variable)
{
if (counter == 9){
counter=0;
b=0;
a=0;}
if (b==3) b=0;
if (a==3) {b++;
a=0;}
counter++;
B[a][b]=current_variable;
a++;
}
int main () {
int *buffer= new int[1];
ifstream input;
input.open ("input.txt",ios::in|ios::binary);
input.read ((char*)&buffer, 1);
writetomatrix(buffer);
}
Ошибка, которую я получаю:
initializing argument 1 of ‘int writetomatrix(int)’
1 ответ
Вы можете прочитать двоичный файл, используя fread
к массиву char или int. Пока порядок байтов остается прежним, вы можете прочитать любой файл и записать его обратно. Вы можете делать что хотите с байтами или словами, которые вы читаете. Ты можешь использовать sizeof
знать размер int. На большинстве платформ сегодня это 4 байта.