C++ 矩阵乘法加密
从事一个基于简单矩阵乘法加密的大学项目 项目大纲是这样的 文本文件到矩阵乘以加密密钥矩阵= 加密文件 加密文件到矩阵乘以密钥矩阵的逆 =已解密的文件 但我想更进一步,能够处理任何文件(文本、mp3、gif等) 我已经研究了几个小时试图解决这个问题,我开始有点沮丧 我能想到的最好的方法(也是唯一的方法)是让程序读取原始二进制文件并对其执行加密 因此-->问题:C++ 矩阵乘法加密,c++,encryption,matrix,binary,cbc-mac,C++,Encryption,Matrix,Binary,Cbc Mac,从事一个基于简单矩阵乘法加密的大学项目 项目大纲是这样的 文本文件到矩阵乘以加密密钥矩阵= 加密文件 加密文件到矩阵乘以密钥矩阵的逆 =已解密的文件 但我想更进一步,能够处理任何文件(文本、mp3、gif等) 我已经研究了几个小时试图解决这个问题,我开始有点沮丧 我能想到的最好的方法(也是唯一的方法)是让程序读取原始二进制文件并对其执行加密 因此-->问题: 我可以从文件中提取原始二进制文件,放入矩阵,执行 矩阵乘法和(本质上)将二进制文件写回文件? 这种方法在不同计算机上的可行性是什么 平台呢
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)’
您可以使用
fread
将二进制文件读取到char或int数组中。只要字节顺序保持不变,您就可以读取任何文件并将其写回。你可以用你读的字节或单词做你想做的事情。您可以使用sizeof
来知道int的大小。在今天的大多数平台上,int的大小是4字节。一些(旧)版本的Unixcrypt
使用希尔密码,这与您描述的差不多。我还没有看过,但你可能很容易找到至少一个这样的实现的源代码。谢谢你的回答,但我想知道你是否可以像我说的那样进行二进制计算?简短的回答是“是”——你可以读取和操作二进制数据。通常,您会将其作为无符号字符的数组(或向量等)
。再次感谢您的回复:),因此,如果我理解正确,您可以说——将一个无符号字符乘以另一个无符号字符?编辑:这将执行二进制乘法吗?是的--无符号字符
只是一个小整数类型(通常范围为0..255)。你可以像其他整数类型一样对它进行数学运算(尽管它将首先转换为int
,因此你可能需要添加一个强制转换才能将结果返回到无符号字符
)。谢谢你的回复:)尽管我不完全理解你所说的字节顺序是什么意思?