0

从事基于简单矩阵乘法加密的大学项目。

项目大纲是这样的;

文本文件到矩阵乘以加密密钥矩阵 = 加密文件。

加密文件到矩阵乘以密钥矩阵的倒数 = 解密文件。

但我想更进一步,能够处理任何文件(文本、mp3、gif 等)。

我已经研究了几个小时试图解决这个问题,并且开始有点沮丧。

我能想到的最好的方法(也是唯一的方法)是让程序读取原始二进制文件并对其执行加密。

所以-->问题:

  1. 我可以从文件中提取原始二进制文件,放入矩阵,执行矩阵乘法并(基本上)将二进制文件写回文件吗?

  2. 另外,这种方法在不同的计算机和平台上的可行性是什么?(我在想,也许如果我从二进制转换为 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)’
4

1 回答 1

0

fread您可以使用char 或 int 数组读取二进制文件。只要字节顺序保持不变,您就可以读取任何文件并将其写回。你可以用你读到的字节或单词做你想做的事。您可以使用sizeof来了解 int 的大小。在今天的大多数平台上,它是 4 个字节。

于 2012-03-07T22:08:08.220 回答