如何将C语言中的文件加密与解密操作改写为一个长尾词的?

2026-04-12 06:571阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1650个文字,预计阅读时间需要7分钟。

如何将C语言中的文件加密与解密操作改写为一个长尾词的?

目录:C语言文件加密与解密+加密解密过程+使用AES 256位减运算+功能需求+系统提供的功能+总结+C语言文件加密与解密+程序是一个C语言的大作

目录
  • c语言文件加密与解密
  • 具体加密过程如下
  • 解密过程与加密过程类似,采用的是模26减运算
    • 功能要求
    • 系统应提供以下功能
  • 总结

    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

    如何将C语言中的文件加密与解密操作改写为一个长尾词的?

    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("功能如下\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; }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

    本文共计1650个文字,预计阅读时间需要7分钟。

    如何将C语言中的文件加密与解密操作改写为一个长尾词的?

    目录:C语言文件加密与解密+加密解密过程+使用AES 256位减运算+功能需求+系统提供的功能+总结+C语言文件加密与解密+程序是一个C语言的大作

    目录
    • c语言文件加密与解密
    • 具体加密过程如下
    • 解密过程与加密过程类似,采用的是模26减运算
      • 功能要求
      • 系统应提供以下功能
    • 总结

      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

      如何将C语言中的文件加密与解密操作改写为一个长尾词的?

      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("功能如下\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; }

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。