今天编程学习网为大家讲解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://phpxs.com/post/10455/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料