文件打包加密和解包解密
提示:这里记录上一章提到的加密解密进行一个进阶的
打包+加密 —— + ——解包+解密
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
思路
提示:这里分享一下思路记录的大概内容:
打包加密
- //创建打包文件
- //循环读取待打包文件
- //打包_将读取的数据存储到打包文件里
- //保存关闭
- //将打包好的文件进行加密
- //关闭保存
解包解密:
- //读取加密文件
- //将读取到的内容进行解密并写入各自对应的文件
- //进行解包
- //保存关闭
提示:以下是本篇文章正文内容,下面案例可供参考
一、怎么加密?
用运算符,上一章讲到,或者用其他自定义算法都可以。
二、使用步骤
1.加密打包
代码如下(示例):
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
#include<easyx.h>
//创建结构体存储打包关键信息
struct MyDbJm
{
char FileName[256];
int FileSize;
};
int mlqz(double a);
void quit(int n);
int main(int argc, char* argv[])
{
int key;
printf("请输入加密密钥:");
scanf("%d", &key);
int Num = argc - 1;
srand((unsigned int)time(NULL));
//建立结构体数组
struct MyDbJm* FileIofos = (struct MyDbJm*)malloc(Num * sizeof(struct MyDbJm));
FILE* XxCc;
/*输出1*/
printf("本次打包数量%d个\n", argc - 1);
printf("正在开始打包...\n");
double jindu=NULL; //文件总大小
double JDbl = NULL;//一个初始值,最大等于文件大小
double Bai = NULL;//待定
//赋值
for (int i = 0; i < Num; i++)
{
strcpy(FileIofos[i].FileName, argv[i + 1]);//拷贝文件名 文件名赋值
XxCc = fopen(FileIofos[i].FileName, "rb");//读取拷贝这个文件
fseek(XxCc, 0, SEEK_END); //SEEK_SET 从文件头开始 SEEK_CUR 从当前位置 SEEK_END 从文件尾
FileIofos[i].FileSize = ftell(XxCc);//ftell获取文件内容指针到文件头的字节数
jindu += FileIofos[i].FileSize;
fclose(XxCc);//关闭文件
}
/*创建打包文件*/
char buff[32] = {
NULL };
sprintf(buff, "./%c%d%c%c%c%c_%d%c.520XC",//随机文件名
rand() % 26 + 'a', rand() % 10, rand() % 26 + 'A', rand() % 30 + 'a', rand() % 32 + 'a', rand() % 26 + 'a', rand() % 10, rand() % 38 + 'a');
FILE* XCdata = fopen(buff, "wb");//打包创建
//写入内容
// 1 文件个数
fwrite(&Num, 1, sizeof(int), XCdata);
// 2 文件信息
fwrite(FileIofos,