编程工人 2022-01-09 13:17 采纳率: 66.7%
浏览 66
已结题

c++读取文件的二进制,如何能和nodejs的fs读出来一样

我用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);
}

  • 写回答

3条回答 默认 最新

  • churuxu 2022-01-10 09:50
    关注

    你描述的问题是结果不一样,代码只放一个,那怎么对比,你把两个代码都放上来

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 修改了问题 1月9日
  • 修改了问题 1月9日
  • 展开全部

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振