今天編程學習網為大家講解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[]和key,word[]為存儲待加密單詞的字符數組,加密后的密文也存儲到該數組,返回給調用者。加密函數使用for循環遍歷word字符數組,在循環過程中,對word內的大小寫字母分別進行加密,小寫字母的加密過程為:(1)當前字母減去小寫字母a,ASCII碼差值賦值給變量k,變量k為當前字母對于字母a的偏離程序;(2)計算當前字母移動key個位置后的字母表索引m,其計算過程為變量k的值加上密鑰key(字母的移動次數)與26取模,對26取模保證m始終位于0至25之間,最后將索引為m的小寫字母表的字母賦值給索引為i的word元素。對大寫字母的處理過程和小寫字母完全相同。
(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語言教程歡迎持續關注編程學習網
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.wangchenghua.com/post/10455/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料