c语言中的文件加密与解密怎么实现

寻技术 C/C++编程 2023年08月21日 62

本篇内容主要讲解“c语言中的文件加密与解密怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c语言中的文件加密与解密怎么实现”吧!

    c语言文件加密与解密

    本程序是一个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减运算

    功能要求

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

    系统应提供以下功能

    • 加密:对给定文件file1.txt内容按照密钥k=Monday进行加密,加密后密文写到文件file2.txt中;

    • 解密:对给定密文文件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("功能如下
    1.加密
    2.解密
    3.退出
    ");
    	printf("请输入您所需功能对应的序号:(例:如需调用加密功能,便打出1即可)
    ");
    	for(;;)//直到输入3时才会退出 
    	{
    		scanf("%d",&i);
    		if(i==1)j=complex();
    		if(i==2)j=simplify();
    		if(i==3)break;
    		if(j==1)printf("
    功能实现成功
    ");
    		if(j==0)printf("
    功能实现失败
    "); 
    	}
    	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!='
    关闭

    用微信“扫一扫”