通过矩阵乘法加密

时间:2012-03-07 21:59:02

标签: c++ encryption matrix binary cbc-mac

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

项目大纲是这样的;

  

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

     

加密文件到矩阵乘以键矩阵的逆   =解密文件。

但我想更进一步,能够做任何文件(text,mp3,gif等)。

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

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

所以 - >问题:

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

  2. 这种方法在不同计算机上的可行性是什么? 和平台? (我想也许如果我从二进制转换 对于int和解密转换回来,它可能会改变 - 不同 不同计算机上的大小分配等?)

  3. 此外,我欢迎就更好的解决方案发表意见

    --->但基本算法应该基于矩阵乘法。

    我的代码:

    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 个答案:

答案 0 :(得分:0)

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