凯撒密码c语言设计思路
时间: 2023-10-19 15:06:50 浏览: 437
凯撒密码是一种简单的加密方法,它将明文中的每个字母都向右(或向左)移动固定的位置,从而得到密文。加密和解密使用的移动位数是相同的,这个数被称为密钥。
下面是凯撒密码的C语言设计思路:
1. 定义一个字符串变量存放明文和密文。
```c
char message[100];
```
2. 定义一个整型变量存放密钥。
```c
int key;
```
3. 获取用户输入的明文和密钥。
```c
printf("Enter message: ");
scanf("%s", message);
printf("Enter key: ");
scanf("%d", &key);
```
4. 加密明文。
```c
int i = 0;
while(message[i] != '\0') {
if(message[i] >= 'a' && message[i] <= 'z') {
message[i] = (message[i] + key - 'a') % 26 + 'a';
}
else if(message[i] >= 'A' && message[i] <= 'Z') {
message[i] = (message[i] + key - 'A') % 26 + 'A';
}
i++;
}
```
5. 输出密文。
```c
printf("Encrypted message: %s\n", message);
```
6. 解密密文。
```c
i = 0;
while(message[i] != '\0') {
if(message[i] >= 'a' && message[i] <= 'z') {
message[i] = (message[i] - key - 'a' + 26) % 26 + 'a';
}
else if(message[i] >= 'A' && message[i] <= 'Z') {
message[i] = (message[i] - key - 'A' + 26) % 26 + 'A';
}
i++;
}
```
7. 输出解密后的明文。
```c
printf("Decrypted message: %s\n", message);
```
完整代码如下:
```c
#include <stdio.h>
int main() {
char message[100];
int key;
// 获取用户输入
printf("Enter message: ");
scanf("%s", message);
printf("Enter key: ");
scanf("%d", &key);
// 加密
int i = 0;
while(message[i] != '\0') {
if(message[i] >= 'a' && message[i] <= 'z') {
message[i] = (message[i] + key - 'a') % 26 + 'a';
}
else if(message[i] >= 'A' && message[i] <= 'Z') {
message[i] = (message[i] + key - 'A') % 26 + 'A';
}
i++;
}
printf("Encrypted message: %s\n", message);
// 解密
i = 0;
while(message[i] != '\0') {
if(message[i] >= 'a' && message[i] <= 'z') {
message[i] = (message[i] - key - 'a' + 26) % 26 + 'a';
}
else if(message[i] >= 'A' && message[i] <= 'Z') {
message[i] = (message[i] - key - 'A' + 26) % 26 + 'A';
}
i++;
}
printf("Decrypted message: %s\n", message);
return 0;
}
```
阅读全文