900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 凯撒(Caesar)密码加密解密c语言

凯撒(Caesar)密码加密解密c语言

时间:2019-12-07 23:57:14

相关推荐

凯撒(Caesar)密码加密解密c语言

独角兽企业重金招聘Python工程师标准>>>

我想用英语写注释,麻痹,写不明白!

编译器是vc++6.0

输入:omnia gallia est

密钥:3

加密:RPQLD JDOOLD HVW

#include <stdio.h>

int str_len(char *str)//计算字符串长度

{

int len = 0;//设置长度初始值为0

while(*(str++))//用指针递增指向下一个内容直到空为止

len++;//记数

return len; //返回记录的数

}

int main(int argc, char *argv[])

{

//不懂阿斯科马 就把字母存放在数组中了

char a[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

char b[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

char str[50];//定义一个接收输入字符串的数组

int k;

printf("Please input the words :");

gets(str);// 得用gets 有空格 好使

printf("Please input your number:");

scanf("%d",&k);//输入密钥

int len = str_len(str);

/*代码主体两个循环,一层循环控制输入字符,一个一个取出来

与字母表对照,找到位置,再用密钥找出对应的大写字母*/

for(int i = 0;i<len;i++)

for(int j = 0;j<26;j++)

{

if(str[i]==a[j])

str[i] = b[(j+k)%26];

else

str[i] = str[i];

}

printf("%s\n",str);//输出字符串

return 0;

}

//解密

#include <stdio.h>

int str_len(char *str)

{

int len = 0;

while(*(str++))

len++;

return len;

}

int main(int argc, char *argv[])

{

char a[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

char b[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

char str[50];

int k;

printf("Please input the words :");

gets(str);

printf("Please input your number:");

scanf("%d",&k);

int len = str_len(str);

for(int i = 0;i<len;i++)

for(int j = 0;j<26;j++)

{

if(str[i]==b[j])

str[i] = a[(j+26-k)%26];

else

str[i] = str[i];

}

printf("%s\n",str);

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。