C语言100-200之间的素数为密钥的凯撒密码的代码
时间: 2023-12-04 19:15:55 浏览: 67
下面是一个简单的实现:
```c
#include <stdio.h>
// 判断是否为素数
int is_prime(int n) {
if (n < 2) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
// 加密函数
char encrypt(char c, int key) {
if (c >= 'a' && c <= 'z') {
return 'a' + (c - 'a' + key) % 26;
} else if (c >= 'A' && c <= 'Z') {
return 'A' + (c - 'A' + key) % 26;
} else {
return c;
}
}
// 解密函数
char decrypt(char c, int key) {
if (c >= 'a' && c <= 'z') {
return 'a' + (c - 'a' - key + 26) % 26;
} else if (c >= 'A' && c <= 'Z') {
return 'A' + (c - 'A' - key + 26) % 26;
} else {
return c;
}
}
int main() {
int key;
printf("请输入100-200之间的素数作为密钥:");
scanf("%d", &key);
if (!is_prime(key)) {
printf("输入的不是素数!\n");
return 0;
}
getchar(); // 读取输入缓冲区中的换行符
char message[1000];
printf("请输入要加密的消息:");
fgets(message, 1000, stdin);
// 加密
for (int i = 0; message[i] != '\0'; i++) {
message[i] = encrypt(message[i], key);
}
printf("加密后的消息:%s\n", message);
// 解密
for (int i = 0; message[i] != '\0'; i++) {
message[i] = decrypt(message[i], key);
}
printf("解密后的消息:%s\n", message);
return 0;
}
```
程序会要求用户输入100-200之间的素数作为密钥,然后要求用户输入要加密的消息。程序会先对消息进行加密,然后再进行解密,最后输出加密后和解密后的消息。
阅读全文