本程序是一个c语言的大作业的一部分

是简单的基于给定密钥实现的加密解密程序

希望能给后来人一些参考

文件的传输会有明文和密文的区别,明文发送是不安全的。本题目实现对文件的加密和解密操作,采用的加密算法是根据密钥将明文中的字母置换为其它字母,所有字母不区分大小写,不考虑除英文字母外的字符。例如:明文是:They will arrive tomorrow,密钥k=Monday,具体加密过程如下:

① 设置英文字母与0到25有如下的对应关系:

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

②依据上述对应关系将明文和密钥转化为一组数字:

k=(12,14,13,3,0,24)

m=(19,7,4,24,22,8,11,11,0,17,17,8,21,4,19,14,12,14,17,17,14,22)

③将明文数字依据密钥长度分段,并逐一与密钥数字相加(模26),得到密文数字,即:

19

7

4

24

22

8

11

11

0

17

17

8

21

4

19

14

12

14

17

17

14

22

12

14

13

3

0

24

12

14

13

3

0

24

12

14

13

3

0

24

12

14

13

3

5

21

17

1

22

6

23

25

13

20

17

6

7

18

6

17

12

12

3

5

1

25

C=(5,21,17,1,22,6,23,25,13,20,17,6,7,18,6,17,12,12,3,5,1,25)

④依据字母和数字对应关系将密文数字转换为字母串,即密文为:

c=FVRBWGXZNURGHSGRMMDFBZ

解密过程与加密过程类似,采用的是模26减运算。

功能要求:

主函数提供功能菜单供用户选择,用户可以选择调用以下各个功能,也可以选择退出程序。系统应提供以下功能:

  1. 加密:对给定文件file1.txt内容按照密钥k=Monday进行加密,加密后密文写到文件file2.txt中;
  2. 解密:对给定密文文件file3.txt 利用密钥k=Monday进行解密,解密后的明文存放在文件file4.txt中;
#include<stdio.h>int key[6]={12,14,13,3,0,24};//定义密钥
int complex();
int simplify();int main()
{int i=0,j=0;printf("功能如下\n1.加密\n2.解密\n3.退出\n");printf("请输入您所需功能对应的序号:(例:如需调用加密功能,便打出1即可)\n");for(;;)//直到输入3时才会退出 {scanf("%d",&i);if(i==1)j=complex();if(i==2)j=simplify();if(i==3)break;if(j==1)printf("\n功能实现成功\n");if(j==0)printf("\n功能实现失败\n"); }return 0;
}
int complex() //加密
{FILE *pin, *pout;pin = fopen("file1.txt","r");pout= fopen("file2.txt","w"); int k=0;char Ming[1000],Mi[1000],*p=Ming,*q=Mi; fgets(Ming,1000,pin); //puts(Ming);for(;*p!='\0';p++){if(*p>='a'&&*p<='z'){*q=(*p-97+key[k])%26+65;// printf(" %d %d %c\n",*(key+k),k,*q);k=k+1;q++; if(k==6)k=0;}if(*p>='A'&&*p<='Z'){*q=(*p-65+key[k])%26+65;//    printf(" %d %d %c\n",*(key+k),k,*q);k=k+1;q++;if(k==6)k=0;}}*q='\0';//printf("密文为:"); //puts(Mi);fputs(Mi,pout); fclose(pin);fclose(pout);return 1;} int simplify()//解密 { FILE *pin, *pout;pin = fopen("file3.txt","r");pout= fopen("file4.txt","w");//打开文件 int k=0; //定义密钥 //k的意义是让密匙能够循环使用 char Ming[1000],Mi[1000],*p=Mi,*q=Ming;//定义密文,明文字符串 fgets(Mi,1000,pin);//从文件3读取密文 for(;*p!='\0';p++)//解密 { if(*p>='A'&&*p<='Z'){*q=(*p-65+26+26-*(key+k))%26+65;//printf(" %d %d %c\n",*(key+k),k,*q);//检验key出没出问题  k=k+1;q++;if(k==6)k=0;//这两行代码让密钥循环使用 }   }*q='\0';//使字符串结束 fputs(Ming,pout);//puts(Ming);检验输出结果//导出加密结果 fclose(pin);fclose(pout); //关闭两个文件return 1;}

c语言 文件加密与解密相关推荐

  1. c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc

    C语言文件加密解密及单词统计程序.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分  高级语言程序设计 课程设计学 院 计算 ...

  2. (C语言)简单的文件加密和解密程序

    一个简单的文件加密和解密程序 main.c #include <stdio.h> #include <stdlib.h> #include "fun.h"i ...

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

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

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

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

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

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

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

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

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

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

  8. c语言文件加密大写字母,C语言 文件加密解密

    #includejiemi() { int k,l; char fn[40],fs[40]; char ch,mima[40],x; file *f1,*f2; printf("输入要解密的 ...

  9. xml文件加密和解密

    XML介绍 Extensible Markup Language(XML),可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言. XML文件特征如下: a) XML第一行是声明, 格式如下 ...

最新文章

  1. 高压测试平台:高压包产生高电压基本测试参数
  2. Swift使用iconfont图标
  3. CMPB 2021|U-Net:又一魔改U-Net应用于腹部肝脏分割任务!
  4. poj1548 Robots
  5. Leetcode 179. 最大数 解题思路及C++实现
  6. Lucene下载及测试
  7. Django内置的分页模块
  8. 【oracle】oracle jdbc驱动与c3p0的一个兼容问题
  9. 提示JS错误:WebForm_PostBackOptions 未定义
  10. C# -- 文件的压缩与解压(GZipStream)
  11. python编程基础—正则表达式
  12. 解决清除浮动的最佳办法
  13. 图像分割各种评测标准
  14. 电子设计大赛-电源类题目分析
  15. ReentrantLock加锁解锁线程入队源码分析
  16. OSChina 周二乱弹 —— 好朋友都脱单了 而我就比较厉害了
  17. Latex 安装及学习教程
  18. org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in XML document from U
  19. poi报空指针_空指针异常apache poi
  20. 《数据结构与算法 Python语言实现》书评与学习心得

热门文章

  1. 句柄php,什么是PHP句柄
  2. 计算机辅助设计表现的发展给设计带来的影响,计算机辅助设计对艺术设计的影响.doc...
  3. 湖南中烟计算机类考什么,2022湖南中烟专业知识模拟题:计算机类(八)
  4. 马科维茨模型 matlab,马科维茨投资组合理论(均方模型)学习笔记——基于Matlab(四)...
  5. 带掩码的自编码器MAE在各领域中的应用总结
  6. vue开发公众号-关闭浏览器返回主公众号
  7. SQL Server 2008附加mdf文件连接数据库18456错误
  8. Freeswitch智能语音开发之TTS
  9. kafka对单分区重设偏移量
  10. 直播平台开发过程中关于谷歌fcm推送介绍