用C语言写出凯撒密码代码
时间: 2024-05-05 21:19:47 浏览: 98
凯撒密码的c语言编写
以下是用C语言实现凯撒密码的加密和解密功能的示例代码:
```c
#include<stdio.h>
#include<string.h>
// 凯撒密码加密函数
void caesar_encrypt(char *msg, int shift) {
int i = 0;
char ch;
while(msg[i] != '\0') {
ch = msg[i];
// 大写字母移位
if(ch >= 'A' && ch <= 'Z') {
ch = (ch + shift - 'A') % 26 + 'A';
}
// 小写字母移位
else if(ch >= 'a' && ch <= 'z') {
ch = (ch + shift - 'a') % 26 + 'a';
}
msg[i] = ch;
i++;
}
}
// 凯撒密码解密函数
void caesar_decrypt(char *msg, int shift) {
int i = 0;
char ch;
while(msg[i] != '\0') {
ch = msg[i];
// 大写字母移位
if(ch >= 'A' && ch <= 'Z') {
ch = (ch - shift - 'A' + 26) % 26 + 'A';
}
// 小写字母移位
else if(ch >= 'a' && ch <= 'z') {
ch = (ch - shift - 'a' + 26) % 26 + 'a';
}
msg[i] = ch;
i++;
}
}
int main() {
char message[100];
int shift;
printf("请输入要加密的字符串:");
scanf("%s", message);
printf("请输入要移位的位数:");
scanf("%d", &shift);
caesar_encrypt(message, shift);
printf("加密后的字符串为:%s\n", message);
caesar_decrypt(message, shift);
printf("解密后的字符串为:%s\n", message);
return 0;
}
```
在这个示例代码中,我们定义了两个函数`caesar_encrypt()`和`caesar_decrypt()`,分别用于凯撒密码的加密和解密。这两个函数都接受两个参数,第一个参数是要加密或解密的字符串,第二个参数是移位的位数。
在`caesar_encrypt()`中,我们遍历字符串中的每个字符,如果是大写字母,则将其移位后取模得到新的字符,再加上字符'A'得到新的字符;如果是小写字母,则同样进行移位操作,但是加上的是字符'a'。最后将修改后的字符串存回原来的数组中。
在`caesar_decrypt()`中,我们同样遍历字符串中的每个字符,还原出原来的字符。由于加密时是将字符加上一个位移量,所以解密时只需将字符减去这个位移量即可。注意需要处理字符超出了'A'-'Z'和'a'-'z'范围的情况。
在`main()`函数中,我们首先读入要加密的字符串和移位的位数,然后调用`caesar_encrypt()`和`caesar_decrypt()`分别进行加密和解密操作,并输出结果。
阅读全文