任务描述
本关任务:基于恺撒密码加密技术加密文本。
在密码学中,恺撒密码(英语:Caesar cipher) ,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。如图1所示。
如图1所示,当偏移量为3时,明文中的大写字母将被其后第3个大写字母替换为密文,即字母 'A'将被替换成 'D','B'替换成 'E',依此类推, 'X' 被替换为 'A', 'Y' 被替换为 'B', 'Z' 被替换为 'C'。
编程要求
根据提示,补充代码。基于凯撒密码加密算法,编写函数 encrypt
,将给定的英文字母(明文),根据密钥进行转换。 函数 encrypt
的原型为int encrypt(char c ,int move);
,其中变量c
是待转换的明文字母,move
是密钥,函数返回值是转换后的密文字母。
代码展示:
/*本程序基于恺撒密码加密技术加密文本*/
#include <stdio.h>
int encrypt(char c ,int move); /* 函数原型声明 */
int main()
{
char c;
int pwd[200];
int move,l,i;
l = 0;
scanf("%d\n",&move);
while ((c = getchar()) != EOF){
if(( c >= 'A' && c <= 'Z')||(c >= 'a' && c <= 'z'))
pwd[l] = encrypt(c,move);
else
pwd[l] = c;
++l; /* 计算字符个数 */
}
for (i = 0; i < l; ++i)
printf("%c", pwd[i]);
return 0;
}
int encrypt(char c, int move)
{
if(c<=('z'-move)&&c>='a'||c<=('Z'-move)&&c>='A')
return c+move;
else
return c-26+move;/*请在此处添加代码,完善 encrypt 函数实现明文加密*/
/********** Begin **********/
/********** End **********/
}
在头歌平台上运行结果: