c語言加密案例,c語言寫加密程序

本文目錄一覽:

簡單的C語言加密程序

#includestdio.h

#includestdlib.h

main()

{

int key;

char ch;

printf(“\n請輸入密鑰:”);

scanf(“%d”,key);

printf(“得到對應明文如下:”);

while((ch=getchar())!=’\r’)

(ch+key)122?putchar(ch-122+33+key):

((ch+key)33?putchar(ch+122+key):putchar(ch+key));

}

輸入輸出如下:

請輸入密鑰:20addse

得到對應明文如下:uxx.y

你先輸入一個任意的整數,如20,然後在鍵盤上輸入一段任意的字符如addse

按回車鍵結束,就會得到結果 如:uxx.y

下面是另一組輸入輸出:

請輸入密鑰:35asjRYIRER!@#$^^*

得到對應明文如下:+=4u#luhuDcFG((MI-

具體是如何加密,你應該能看懂,就是用一個三目運算符 ? :控制。

RSA加密解密算法示例(C語言)

#include stdlib.h

#include stdio.h

#include string.h

#include math.h

#include time.h

#define PRIME_MAX 200   // 生成素數範圍

#define EXPONENT_MAX 200 // 生成指數e範圍

#define Element_Max 127    // 加密單元的最大值,這裡為一個char, 即1Byte

char str_read[100]=”hello world !”;  // 待加密的原文

int str_encrypt[100];                // 加密後的內容

char str_decrypt[100];              // 解密出來的內容

int str_read_len;                    // str_read 的長度

int prime1, prime2;                  // 隨機生成的兩個質數

int mod, eular;                      // 模數和歐拉數

int pubKey, priKey;                  // 公鑰指數和私鑰指數

// 生成隨機素數,實際應用中,這兩個質數越大,就越難破解。

int randPrime()

{

int prime, prime2, i;

next:

prime = rand() % PRIME_MAX;   // 隨機產生數

if (prime = 1) goto next;      // 不是質數,生成下一個隨機數

if (prime == 2 || prime == 3) return prime;

prime2 = prime / 2;              // prime=4, prime2 的平方必定大於 prime , 因此只檢查小於等於prime2的數

for (i = 2; i = prime2; i++)   // 判斷是否為素數

{

if (i * i prime) return prime;

if (prime % i == 0) goto next;  // 不是質數,生成下一個隨機數

}

}

// 歐幾里德算法,判斷a,b互質

int gcd(int a, int b)

{

int temp;

while (b != 0) {

temp = b;

b = a % b;

a = temp;

}

return a;

}

//生成公鑰指數,條件是 1 e 歐拉數,且與歐拉數互質。

int randExponent()

{

int e;

while (1)

{

e = rand() % eular; if (e EXPONENT_MAX) break;

}

while (1)

{

if (gcd(e, eular) == 1) return e; e = (e + 1) % eular; if (e == 0 || e EXPONENT_MAX) e = 2;

}

}

//生成私鑰指數

int inverse()

{

int d, x;

while (1)

{

d = rand() % eular;

x = pubKey * d % eular;

if (x == 1)

{

return d;

}

}

}

//加密函數

void jiami()           

{

str_read_len = strlen(str_read);      //從參數表示的地址往後找,找到第一個’\0’,即串尾。計算’\0’至首地址的“距離”,即隔了幾個字符,從而得出長度。

printf(“密文是:”);

for (int i = 0; i str_read_len; i++)

{

int C = 1; int a = str_read[i], b = a % mod;

for (int j = 0; j pubKey; j++) //實現加密

{

C = (C*b) % mod;

}

str_encrypt[i] = C;

printf(“%d “, str_encrypt[i]);

}

printf(“\n”);

}

//解密函數

void jiemi()         

{

int i=0;  for (i = 0; i str_read_len; i++)

{

int C = 1; int a = str_encrypt[i], b=a%mod;

for (int j = 0; j priKey; j++)

{

C = (C * b) % mod;

}

str_decrypt[i] = C;

}

str_decrypt[i] = ‘\0’; printf(“解密文是:%s \n”, str_decrypt);

}

int main()

{

srand(time(NULL));

while (1)

{

prime1 = randPrime(); prime2 = randPrime(); printf(“隨機產生兩個素數:prime1 = %d , prime2 = %d “, prime1, prime2);

mod = prime1 * prime2; printf(“模數:mod = prime1 * prime2 = %d \n”, mod); if (mod Element_Max) break; // 模數要大於每個加密單元的值

}

eular = (prime1 – 1) * (prime2 – 1);  printf(“歐拉數:eular=(prime1-1)*(prime2-1) = %d \n”, eular);

pubKey = randExponent(); printf(“公鑰指數:pubKey = %d\n”, pubKey);

priKey = inverse(); printf(“私鑰指數:priKey = %d\n私鑰為 (%d, %d)\n”, priKey, priKey, mod);

jiami(); jiemi();

return 0;

}

用C語言設計一個文件加密與解密程序

c語言文件加密和解密方法如下:

1、首先打開VC++6.0;

2、選擇文件,新建;

3、選擇C++ source file 新建一個空白文檔;

4、聲明頭文件

#includestdio.h

#includestdlib.h

#includestring.h

首先寫個加密函數,算法就是簡介里說的;

void EncryptFile(FILE *sfp,FILE *dfp,char pwd)

{

char ch;

if(sfp==0||dfp==0)

{

printf(“ERROR!\n”);

return;

}

while((ch=fgetc(sfp))!=EOF)

{

if((ch=’a’)(ch=’z’))

{

ch=(ch-‘a’+1)%26+’a’;

ch=ch^pwd;

}

if((ch=’A’)(ch=’Z’))

{

ch=(ch-‘A’+1)%26+’A’;

ch=ch^pwd;

}

fputc(ch,dfp);

}

}

寫解密子函數:與加密的過程相反;

void DecryptFile(FILE *sfp,FILE *dfp,char pwd)

{

char ch;

while((ch=fgetc(sfp))!=EOF)

{

if((ch=’a’)(ch=’z’))

{

ch=ch^pwd;

ch=(ch-‘a’+25)%26+’a’;

}

if((ch=’A’)(ch=’Z’))

{

ch=ch^pwd;

ch=(ch-‘A’+25)%26+’A’;

}

fputc(ch,dfp);

}

}

輸出函數,輸出文件內容

void OutputFile(FILE *fp)

{

char ch;

while((ch=fgetc(fp))!=EOF)

putchar(ch);

}

 主函數,主要調用這幾個函數

int main()

{

/*用戶輸入的要加密的文件名*/

char sfilename[20];

/*用戶輸入加密後保存的文件名*/

char dfilename[20];

/*用來保存密碼字符*/

char pwd;

FILE *sfp,*dfp;

printf(“\nPlease input filename to be encrypted:\n”);

/*得到要加密的文件名*/

gets(sfilename);

/*得到加密後你要的文件名*/

printf(“input filename to save the encrypted file:\n”);

gets(dfilename);

/*得到加密字符*/

printf(“Please input your Password:\n”);

//scanf(“%c”,pwd);

pwd=getch();

/*屏幕以*來表示輸入的加密字符*/

printf(“*\n”);

/*以只讀方式打開要加密的文件*/

if((sfp=fopen(sfilename,”r”))==0)

{

printf(“Can’t open the file :%s\n”,sfilename);

exit(0);

}

/*輸出要加密的文件*/

printf(“\nThe the text of file to be encrypted is:\n”);

OutputFile(sfp);

/*建立加密後的文件*/

if((dfp=fopen(dfilename,”w+”))==0)

{

printf(“Can’t open or create the file :%s\n”,dfilename);

//exit(0);

}

/*文件加密*/

fseek(sfp,0L,SEEK_SET);

EncryptFile(sfp,dfp,pwd);

printf(“\n\nEncrypted the file successfully!\n”);

/*輸出加密後的文件*/

printf(“\nAfter encrypting the text of file is:\n”);

fseek(dfp,0L,SEEK_SET);

OutputFile(dfp);

fclose(sfp);

fclose(dfp);

getch();

return 0;

}

C語言字符串加密 多實例

string i;

int k;

cinik;

for (int q=0;qi.length();q++)

{

if (i[q]=’a’ i[q]=’z’)

i[q]=char((i[q]-‘a’+k)%26+’a’);

else

if (i[q]=’A’i[q]=’Z’)

i[q]=char((i[q]-‘A’+k)%26+’A’);

}

C語言設計一個簡單的加密解密程序

C語言設計一個簡單的加密解密程序如下:

加密程序代碼:

#includestdio.h

main()

{

char c,filename[20];

FILE *fp1,*fp2;

printf(“請輸入待加密的文件名:\n”);

scanf(“%s”,filename);

fp1=fopen(filename,”r”);

fp2=fopen(“miwen.txt”,”w”);

do

{

c=fgetc(fp1);

if(c=32c=126)

{

c=c-32;

c=126-c;

}

if(c!=-1)

fprintf(fp2,”%c”,c);

}

while(c!=-1);

}

解密程序代碼:

#includestdio.h

#includestring.h

main()

{

char c,filename[20];

char yanzhengma[20];

FILE *fp1,*fp2;

printf(“請輸入待解密文件名:\n”);

scanf(“%s”,filename);

printf(“請輸入驗證碼:\n”);

scanf(“%s”,yanzhengma);

if(strcmp(yanzhengma,”shan”)==0)

{

fp1=fopen(filename,”r”);

fp2=fopen(“yuanwen.txt”,”w”);

do

{

c=fgetc(fp1);

if(c=32c=126)

{

c=126-c;

c=32+c;

}

if(c!=-1)

fprintf(fp2,”%c”,c);

}

while(c!=-1);

}

else

{

printf(“驗證碼錯誤!請重新輸入:\n”);

scanf(“%s”,filename);

}

}

原創文章,作者:UOWZ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/141809.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UOWZ的頭像UOWZ
上一篇 2024-10-09 09:52
下一篇 2024-10-09 09:52

相關推薦

  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python數據統計案例的實現

    Python作為一個高級編程語言,擁有着豐富的數據處理庫和工具,能夠快速、高效地進行各類數據處理和分析。本文將結合實例,從多個方面詳細闡述Python數據統計的實現。 一、數據讀取…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟件。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29

發表回復

登錄後才能評論