第四课:文件操作【解密】
小编个人觉得,一个文件加密好后,想要再解密,就得了解其构造,以及写法。
而小编这里呢,写的文件很粗糙,也很简单,只是将每个字节后添加一些东西,既然知道了写法构成,那么就好办了。
声明一个全局解密函数如下:
//解密函数 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] << "\t";这里可以看看加密后的文件数据具体化 //因为知晓了加多少个字节数据,所以直接跳过加密数据 *(Buffer2+j) = Buffer[i]; j++; } *(Buffer2 + j) = '\0'; 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文件内的数据。
条条英符铸平凡,行行代码显乾坤;