我用c++读取二进制文件,读取了一个图片,然后对读出的二进制进行处理,处理后在写入二进制文件中,然后用nodejs的fs进行读取相同图片二进制文件的时候发现,nodejs的fs和c++读取的相同二进制文件的结果不一样,问:如何能让nodejs读取的文件二进制和c++读取的文件二进制一样?
具体需求:
我需要用c++读取图片为二进制,然后对二进制的每一位进行异或操作达到加密效果,然后把加密后的文件拿到nodejs中,用nodejs的fs打开图片文件为二进制,对二进制每一位进行异或操作达到解密效果。现在c++文件异或加密已实现,要用nodejs实现异或解密。
C++已实现的文件异或加密,需要用nodejs实现一个一模一样的,但现在发现nodejs读取的二进制和c++不一样....,这是c++已实现并测试通过的代码
//加密单个文件
void MainLogic::Encryption(char *in_fname, char *out_fname, char *pwd)
{
FILE *in_file, *out_file;
register char ch;
int x;
x = strlen(pwd);
in_file = fopen(in_fname, "rb");//以读的方式打开二进制文件
if (in_file == NULL)//如果打开失败
{
cout << "Open file error";
return;
}
out_file = fopen(out_fname, "wb");//以写的方式打开二进制文件
if (out_file == NULL)//如果创建失败
{
cout << "Create file error";
return;
}
char sz[1024 * 10]; // 每次读写这么多
int nTotalLen = 0;
while (1)
{
int nLen = fread(sz, 1, 1024 * 10, in_file);
if (nLen <= 0)
break;
//cout << nLen << endl;
char sout[1024 * 10];
int nIndex = 0;
for (int i = 0; i < nLen; i++)
{
sout[i] = sz[i] ^ pwd[nIndex >= x ? nIndex = 0 : nIndex++];
}
fwrite(sout, 1, nLen, out_file);
}
fclose(in_file);
fclose(out_file);
}