开展基于简单矩阵乘法加密的大学项目。
项目大纲是这样的;
文本文件到矩阵乘以加密密钥矩阵= 加密文件。
加密文件到矩阵乘以键矩阵的逆 =解密文件。
但我想更进一步,能够做任何文件(text,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)’
答案 0 :(得分:0)
您可以使用fread
将二进制文件读取到char或int数组中。只要字节顺序保持不变,您就可以读取任何文件并将其写回。您可以使用您阅读的字节或单词执行所需操作。您可以使用sizeof
来了解int的大小。在今天的大多数平台上,它是4个字节。