文件的加密与解密1.0 C语言

1.要打开一些文件或目录

gets(filename);
	if(NULL == (fp = fopen(filename,"rb")))
	{
		//如果不为空 表示文件存在,空的表示文件不存在
		printf("您好,您输入的文件不存在\n");
		//退出
		exit(1); 
	}
	//如果文件存在
	printf("文件存在,请输入密码,如:888888\n");
	inputpass(password);
	pwdlen = (int)strlen(password);
	if(0 == pwdlen)
	{
		printf("对不起!密码长度不能为0");
		exit(2); 
	}

2.读出文件的内容进行加密或解密

fptemp = fopen(tempfile,"wb");

3.把加密的信息写入文件中覆盖原来的数据 

while(1)
	{
		ch = getc(fp);
		if(feof(fp))
		{
			/*判断文件读完没有*/
			break;
		}
		//每取出一个字符就加密 
		ch^=password[i++];
		//ch里就是加密以后的数据
		fputc(ch,fptemp);
		//判断
		if(i == pwdlen)
		{
			i = 0;
		} 
	}

4.清理

fclose(fp);
fclose(fptemp);
remove(filename);
rename(tempfile,filename);
printf("恭喜你,文件加密或解秘成功"); 

5.整体代码

#include <iostream>
//引入头文件,标准的输入输出 
#include<stdio.h>
#include <cstdio> 
//提供了一些字符串所要用的函数 
#include <string.h>
//系统函数 
#include <stdlib.h>
#include <ctype.h>

/*声明一些变量*/
char ch = '0';
char filename[256]="";//保存输入的数据,文件的路径 
FILE *fp = NULL;
FILE *fptemp = NULL;
char password[12] = "123456";
const char tempfile[256] = "temp124567890.temp";
int i = 0;
int pwdlen = 0;


/*封装一些函数*/
/*加密程序v1.0*/ 
void menu();
void inputpass(char *pass);


/*函数实现*/
void inputpass(char *pass)
{
	scanf("%s",pass);
} 

void menu()
{
	printf(".......................................\n"); 
	printf("................加密小程序.............\n");
	printf(".......................................\n");
	printf("请输入要加密或解密的文件路径\n");
	printf("例如:/user/tian/av.txt**\n");
    gets(filename);
	if(NULL == (fp = fopen(filename,"rb")))
	{
		//如果不为空 表示文件存在,空的表示文件不存在
		printf("您好,您输入的文件不存在\n");
		//退出
		exit(1); 
	}
	//如果文件存在
	printf("文件存在,请输入密码,如:888888\n");
	inputpass(password);
	pwdlen = (int)strlen(password);
	if(0 == pwdlen)
	{
		printf("对不起!密码长度不能为0");
		exit(2); 
	}
	
	fptemp = fopen(tempfile,"wb");


	while(1)
	{
		ch = getc(fp);
		if(feof(fp))
		{
			/*判断文件读完没有*/
			break;
		}
		//每取出一个字符就加密 
		ch^=password[i++];
		//ch里就是加密以后的数据
		fputc(ch,fptemp);
		//判断
		if(i == pwdlen)
		{
			i = 0;
		} 
	}
	//循环结束后 清理
	fclose(fp);
	fclose(fptemp);
	remove(filename);
	rename(tempfile,filename);
	printf("恭喜你,文件加密或解秘成功"); 
}


/*主函数 程序的入口*/
int main(int argc, char** argv) 
{
	menu();
	return 0;
}

6.运行结果

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值