• 第四课:文件操作【解密】


    小编个人觉得,一个文件加密好后,想要再解密,就得了解其构造,以及写法。

    而小编这里呢,写的文件很粗糙,也很简单,只是将每个字节后添加一些东西,既然知道了写法构成,那么就好办了。

    声明一个全局解密函数如下:

    //解密函数
    int DesEnc_raw(char* Buffer, size_t* size, char* Buffer2, size_t& size2);

    下面直接跳过加密数据,就是原数据了,将其提取出来存入Buffer2中,而字节数存入size2中。

    //解密
    int DesEnc_raw(char* Buffer, size_t* size, char* Buffer2, size_t& size2)
    {
        int number = *size;
        int ret = -1;
        //首先判断带入加密后的字符串是否为空,或者它的字节数是否为0
        if (Buffer == NULL || number ==0)
        {
            cout << "传入的数据为空" << endl;
            system("pause");
            return ret;
        }
        //char* bufftemp = new char [number/4];
        int j = 0;
        for (size_t i = 0;i < number;i+=4)
        {
            //cout << Buffer[i] << "	";这里可以看看加密后的文件数据具体化
                //因为知晓了加多少个字节数据,所以直接跳过加密数据
            *(Buffer2+j) =  Buffer[i];
                
                j++;
        }
        *(Buffer2 + j) = '';
        size2 = j;
        return 0;
    }
    {
      //加密操作
      ...   
      //解密操作
      writeLength = fwrite(raw_name, 1, raw_len, f_Writed);
      //为了以防万一,可以加个判断
      //判断当写入时的字节数和读出数据的字节数,两个数据完全不同,则爆出提示错误,退出
        if (readLength != writeLength)
        {
            cout << "写入文件失败,请检查是否磁盘溢满!" << endl;
    
            return;
        }
    }

    这样就是一套小编完整的加解密文件,当然最后别忘记关闭流对象

    //关闭流对象
    if (f_Writed || f_Read)
    {
         fclose(f_Writed);
         fclose(f_Read);
    }

    运行之后的结果就是,在Mr.jie文件中,保存了Mr.she文件内的数据。

    条条英符铸平凡,行行代码显乾坤;
  • 相关阅读:
    vue+axios拦截器和webapi中读取的实现
    vue+webapi+jwt做token验证时需要注意的一些问题
    vue中引用js文件的方法
    vue+elementui实现表单验证
    vue编程式路由参数的传递
    vue+elementUI实现侧边菜单栏的功能
    vue+webAPI中json相互转换的点滴记录,用于实现按分值的调查问卷功能
    axios中Post请求的两种区别
    vue使用全局变量来定义axios请求地址
    .net Core3.1 webapi前后端一起部署到同一网站遇到的问题
  • 原文地址:https://www.cnblogs.com/VisiousDragon/p/13899333.html
Copyright © 2020-2023  润新知