編程學習網 > 編程語言 > C/C++開發 > C語言編寫簡單加密程序(c語言編程加密)
2022
12-03

C語言編寫簡單加密程序(c語言編程加密)

今天編程學習網為大家講解C語言編寫簡單加密程序(c語言編程加密),有需要的小伙伴可以參考一下:

一個簡單的加密程序主要由加密函數和解密函數構成,解密函數應用密鑰對數據進行加密,解密函數應用密鑰對加密后的數據進行解密,并返回解密后的數據。凱撒密碼可以實現對英文文本的簡單解密和解密,其加密過程是將英文對應的字母移動一定位置,例如加密Hello,若將Hello的每個字母往右移動兩個位置,則Hello就被加密為Jgnq,解密時將Jgnq往左移動兩個位置,Jgnq就被解密為Hello,移動的位置就是加密程序的密鑰。

編程案例:編寫一個程序,使用凱撒密碼對用戶輸入的英文單詞進行加密和解密,密鑰由用戶輸入。

編程步驟:

(1)定義存儲字母大小寫的數組

char lower[26]={'a','b',……,'y','z'};

char capital[26]={'A','B',……,'Y','Z'};

數組lower存儲26個英文小寫字母,數組capital存儲26個英文大寫字母,對英文單詞進行加密時,需要對大小寫字母分別處理。

(2)定義加密函數

void encode(char word[],int key)

{

int i,k,m;

for(i=0;word[i]!='\0';i++)

{

if('a'<=word[i] && word[i]<='z')

{

k=word[i]-'a';

m=(k+key)%26;

word[i]=lower[m];

}

else if('A'<=word[i] && word[i]<='Z')

{

k=word[i]-'A';

m=(k+key)%26;

word[i]=capital[m];

}

}

}

加密函數傳入兩個參數word[]keyword[]為存儲待加密單詞的字符數組,加密后的密文也存儲到該數組,返回給調用者。加密函數使用for循環遍歷word字符數組,在循環過程中,對word內的大小寫字母分別進行加密,小寫字母的加密過程為:(1)當前字母減去小寫字母aASCII碼差值賦值給變量k,變量k為當前字母對于字母a的偏離程序;(2)計算當前字母移動key個位置后的字母表索引m,其計算過程為變量k的值加上密鑰key(字母的移動次數)與26取模,對26取模保證m始終位于025之間,最后將索引為m的小寫字母表的字母賦值給索引為iword元素。對大寫字母的處理過程和小寫字母完全相同。

(3)定義解密函數

void decode(char word[],int key)

{

int i,k,m;

for(i=0;word[i]!='\0';i++)

{

if('a'<=word[i] && word[i]<='z')

{

k=word[i]-'a';

m=(k-key)%26;

word[i]=lower[m];

}

else if('A'<=word[i] && word[i]<='Z')

{

k=word[i]-'A';

m=(k-key)%26;

word[i]=capital[m];

}

}

解密函數的處理過程和加密函數基本相同,不同之處是字母的移動位置與加密函數的移動位置方向相反。

以上就是“C語言編寫簡單加密程序(c語言編程加密)”的詳細內容,想要了解更多C語言教程歡迎持續關注編程學習網

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取