一个简单的文件加密和解密程序

main.c

#include <stdio.h>
#include <stdlib.h>
#include "fun.h"int main(int argc ,char *argv[])
{while(1){  int cmd=0;print_help();printf("请输入指令:");scanf("%d",&cmd);if(cmd==1){char dest_file[31]="";char src_file[31]="";unsigned long file_length=0;char  *read=NULL;unsigned int password=0;//从键盘获取源文件和目的文件名字get_file_name(dest_file,src_file);//从文件中读出内容read = read_src_file(&file_length,src_file);//获取加密passwordprintf("请输入密码:");scanf("%u",&password);//字符数组加密read=file_text_encrypt(read,file_length,password);//保存文件save_file(read,file_length,dest_file);}else if (cmd==2){char dest_file[31]="";char src_file[31]="";unsigned long file_length=0;char  *read=NULL;unsigned int password=0;//从键盘获取源文件和目的文件名字get_file_name(dest_file,src_file);//从文件中读出内容read = read_src_file(&file_length,src_file);//获取加密passwordprintf("请输入密码:");scanf("%u",&password);//字符数组加密read=file_text_decrypt(read,file_length,password);//保存文件save_file(read,file_length,dest_file);}else if (cmd==3){break;}else{printf("输入指令出错!!!\n");}}return 0;
}

fun.c

#include <stdio.h>
#include <stdlib.h>void print_help()
{printf("********1:加密文件***********\n");printf("********2:解密文件***********\n");printf("********3:退出程序***********\n");
}void get_file_name(char * dest_file_name,char * src_file_name)
{printf("请输入源文件的名称:");scanf("%s",src_file_name);printf("请输入目的文件的名称:");scanf("%s",dest_file_name);return;
}char *read_src_file(unsigned long  *file_length,char *src_file_name)
{char *data=NULL;FILE *fp;fp=fopen(src_file_name,"r");//只读的方式打开文件if(fp==NULL){perror("fopen");return NULL;}//流指针go尾部fseek(fp,0,2);//流指针的偏移量*file_length = ftell(fp);//流指针复位rewind(fp);//申请空间保存文件data=(char *)calloc(1,*file_length);if(NULL==data){perror("calloc");return NULL;}//一次性读fread(data,*file_length,1,fp);fclose(fp);return data;}char *file_text_encrypt(char * src_file_text,unsigned long int length,unsigned int password)
{char *data=NULL;unsigned int i=0;for(i=0;i<length;i++){src_file_text[i] += password;}return src_file_text;}void save_file(char* text,unsigned long int length,char * file_name)
{   char *data=NULL;FILE *fp;fp=fopen(file_name,"w");if(NULL==fp){perror("fp");return;}//写fwrite(text,length,1,fp);fclose(fp);if(text !=NULL){free(text);text =NULL;}return;
}char *file_text_decrypt(char * src_file_text,unsigned long int length,unsigned int password)
{char *data=NULL;unsigned int i=0;for(i=0;i<length;i++){src_file_text[i] -= password;}return src_file_text;
}

fun.h

#ifndef __FUN_H__
#define __FUN_H__extern void print_help();
extern void get_file_name(char * dest_file_name,char * src_file_name);
extern char *read_src_file(unsigned long  *file_length,char *src_file_name);
extern char *file_text_encrypt(char * src_file_text,unsigned long int length,unsigned int password);
extern void save_file(char* text,unsigned long int length,char * file_name);
extern char *file_text_decrypt(char * src_file_text,unsigned long int length,unsigned int password);#endif

运行查看

结果
OK!!!

(C语言)简单的文件加密和解密程序相关推荐

  1. Linux下使用Vim/Vi给文件加密和解密

    本文介绍在Linux下使用Vim/Vi给文件加密和解密的简单方法,Vim的文件加密功能不是很强,但比较实用,因为不必要借助其他软件即可实现. 一. 用 Vim/Vi 加密文件: 用 Vim/Vi 加密 ...

  2. tkinter实现文件加密和解密

    源代码:https://gitee.com/mydreamambitious/file-encryption-and-decryption 注:这个代码和界面是做好的,但是还在进行优化和美化中.但是在 ...

  3. 跨语言平台的RSA加密、解密、签名、验证算法的实现

      在网上可以找到各种各样的RSA实现代码,原理都是RSA算法的基本原理,但是在处理数据块划分.填充等问题上都是形形色色的,本文旨在探讨.实现遵循RFC 2313 PKCS#1 v1.5标准的一种跨语 ...

  4. 简单混淆密码加密和解密

    最近项目比较多,就很少写文章.随着项目的收尾.时间也开始比较充裕起来了. 我们在编程过程当中.经常遇见到算法,那到底什么是算法呢. 比方:如果我把密码加密存到数据库,读取的时候再解密还原. 这个过程就 ...

  5. Java基础篇之利用IO流给文件加密、解密

    目标:给文件加密.解密(最基础版) 注意: a.加密过程:先读取整个目标文件,然后将目标文件写入一个新的文件中,在写入的过程中,每隔几个字符插入一个加密符号(随意定),此时这个新的文件就是加密文件 b ...

  6. 文件加密和解密 - 密钥存储

    当我们想要做一次加密系统,或者只是有一个关于这个问题,它是如何保存的加密和解密密钥. 一般认为想要的文件加密和解密,对称算法用于.一般是AES要么DES. 这就存在密钥管理的问题,它是如何? 基本上两 ...

  7. 文件加密和解密软件:AutoCrypt for mac

    为大家推荐一款好用的文件加密和解密软件,AutoCrypt for mac具备强大的AES-256算法,只需点击一下,即可加密并保存在自定义位置,能够轻松帮助用户加密或解密文件,而且autocrypt ...

  8. c语言 文件加密与解密

    本程序是一个c语言的大作业的一部分 是简单的基于给定密钥实现的加密解密程序 希望能给后来人一些参考 文件的传输会有明文和密文的区别,明文发送是不安全的.本题目实现对文件的加密和解密操作,采用的加密算法 ...

  9. 每日10行代码156:Python实现简单的文件加密解密

    我常用的文件加密解密的工具是宏杰加密,但是前两天打开后发现要强制升级,升级后软件变成vip才能使用,并且不能降级.有一天,我突然想起来自己是不是可以用Python写一个加密的工具.于是就动手开是写了. ...

最新文章

  1. 生态伙伴 | xiaopiu入驻飞书,助你高效创作,从原型到文档一站搞定!
  2. Xamarin iOS教程之警告视图
  3. 【转图】从可乐到NIKE 经典logo的web2.0版
  4. JSP学习02-config内置对象
  5. android7.1开机监听广播,Android7.1 Audio Debug相关方法
  6. UGUI_UGUI事件系统简述及使用方法总结
  7. springboot @RequestBody 接收字符串
  8. navicat10.1.7英文版_【纯干货】风险评估和管理(PDA TR 49内容节选11 中英文版)...
  9. C#深入.NET平台的软件系统分层开发
  10. Json-转自菜鸟教程
  11. jsf服务_JSF dataTable示例
  12. 文献阅读 Fully Convolutional Networks for Semantic Segmentation
  13. springSecurity jwt 认证与鉴权及异常
  14. 线性调频(LFM信号)脉冲压缩雷达matlab仿真- 脉冲压缩 测距 测速 距离速度三维像(附matlab代码)
  15. 使用jQuery实现轮播图
  16. 街头篮球Android和苹果,街头篮球手游ios和安卓数据可以互通吗?
  17. 985 材料专业研究生年薪 20 多万也不少了吧,为什么还有那么多人劝退,转行能挣多少钱?
  18. Fabric.js IText 手动设置斜体
  19. 懒人教你用猕猴桃一月饱减16斤_过路老熊_新浪博客
  20. python链家数据分析统计服_Python数据分析实战-链家北京二手房价分析

热门文章

  1. 免费服务器AWS免费使用一年详细教程
  2. 蛇形填数(蛇形矩阵)c++
  3. 出自上帝之手的精妙算法 - Algorithm from THE BOOK (1)
  4. 《Python知识手册》.pdf
  5. Apache Doris FE配置参数
  6. 前端码农日常英语学习
  7. 微信的野心到底有多可怕
  8. android自动拨号112,自动拨号打电话助手
  9. 驱动开发:内核封装WSK网络通信接口
  10. 13c语言——运算符