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

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 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器