中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言中的文件加密與解密怎么實現

發布時間:2023-04-28 11:48:39 來源:億速云 閱讀:125 作者:iii 欄目:開發技術

本篇內容主要講解“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("功能如下\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語言中的文件加密與解密怎么實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    齐齐哈尔市| 梁山县| 石屏县| 巴林右旗| 永丰县| 怀仁县| 大庆市| 密山市| 灵台县| 华坪县| 永新县| 吴桥县| 小金县| 青浦区| 台南县| 旌德县| 唐海县| 开平市| 溧水县| 汝阳县| 临西县| 安新县| 平邑县| 云梦县| 古蔺县| 边坝县| 宜君县| 汨罗市| 错那县| 洪江市| 江永县| 黄浦区| 囊谦县| 老河口市| 枣阳市| 济阳县| 江山市| 吕梁市| 普定县| 丽水市| 高雄县|