使用c语言实现一个古典密码
时间: 2024-10-29 15:14:52 浏览: 19
C语言编写的维吉尼亚密码算法
5星 · 资源好评率100%
在C语言中,我们可以实现一个基于移位(Shift)操作的简单古典密码,比如凯撒密码(Caesar Cipher)。这是一种古老的加密方法,通过将每个字母按照固定的偏移量向右移动来隐藏信息。下面是一个基本的凯撒密码实现:
```c
#include <stdio.h>
#include <ctype.h> // 包含isalpha函数检查是否为字母
#define ALPHABET_SIZE 26
// 移位函数,用于字母的加密和解密
char shift_letter(char letter, int shift) {
if (letter >= 'a' && letter <= 'z') { // 小写字母
return ((letter - 'a' + shift) % ALPHABET_SIZE) + 'a';
} else if (letter >= 'A' && letter <= 'Z') { // 大写字母
return ((letter - 'A' + shift) % ALPHABET_SIZE) + 'A';
}
return letter; // 非字母字符保持不变
}
// 加密函数,输入明文、偏移量和结果数组
void caesar_cipher(char* plaintext, int shift, char* ciphertext) {
for (size_t i = 0; plaintext[i]; ++i) {
ciphertext[i] = shift_letter(plaintext[i], shift);
}
ciphertext[strlen(plaintext)] = '\0'; // 添加字符串结束符
}
int main() {
char plaintext[100];
printf("请输入明文:");
fgets(plaintext, sizeof(plaintext), stdin);
plaintext[strcspn(plaintext, "\n")] = '\0'; // 去除换行符
int shift;
printf("请输入偏移量(1-25):");
scanf("%d", &shift);
char ciphertext[100];
caesar_cipher(plaintext, shift, ciphertext);
printf("加密后的文本:%s\n", ciphertext);
return 0;
}
```
阅读全文