用c语言编写凯撒(CAESAR)密码算法程序
时间: 2024-09-25 14:09:00 浏览: 19
凯撒密码(Caesar Cipher),也称为移位密码,是一种简单的加密技术,通过将明文中的每个字母按照固定的偏移量向后(正向或反向)移动来加密。以下是一个简单的C语言实现步骤:
1. 定义一个函数,比如`caesar_encrypt`,它接受两个参数:明文字符串`plaintext`和偏移量`shift`。
```c
#include <stdio.h>
#include <string.h>
char caesar_encrypt(const char* plaintext, int shift) {
// 其他字符不变,只处理小写字母和大写字母
const char alpha[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int len = strlen(plaintext);
for (int i = 0; i < len; ++i) {
if (alpha[(alpha[(int)plaintext[i] - 'a' + shift) % 26] != '\0')) {
plaintext[i] = alpha[(alpha[(int)plaintext[i] - 'a' + shift) % 26]];
}
else if (alpha[(alpha[(int)plaintext[i] - 'A' + shift) % 26] != '\0')) {
plaintext[i] = alpha[(alpha[(int)plaintext[i] - 'A' + shift) % 26] + 'A' - 'a'];
}
}
return plaintext;
}
int main() {
char input[100];
printf("请输入明文和偏移量(空格分隔):");
fgets(input, sizeof(input), stdin);
// 去除换行符
input[strlen(input)-1] = '\0';
int shift;
sscanf(input, "%d", &shift);
char encrypted[100];
strcpy(encrypted, caesar_encrypt(input, shift));
printf("加密后的密文为: %s\n", encrypted);
return 0;
}
```