凯撒密码学c语言代码
时间: 2024-10-10 11:01:48 浏览: 28
凯撒密码(Caesar Cipher),也称为移位密码,是一种简单的替换加密技术。在C语言中实现凯撒密码的基本思路是,将明文中的每个字符按照固定的偏移量向字母表循环移动。下面是一个简单的凯撒密码编码和解码函数示例:
```c
#include <stdio.h>
#include <ctype.h>
// 加密函数
char caesar_encrypt(char c, int shift) {
if (isalpha(c)) { // 判断是否为字母
c = ((c - 'A' + shift) % 26) + 'A'; // A-Z变为Z-A+1, a-z变为z-a+1
}
return c;
}
// 解密函数
char caesar_decrypt(char c, int shift) {
return caesar_encrypt(c, -shift); // 相对于加密,只需减去偏移量即可
}
int main() {
char plaintext[100], ciphertext[100];
int shift;
printf("请输入明文:\n");
fgets(plaintext, sizeof(plaintext), stdin);
plaintext[strlen(plaintext) - 1] = '\0'; // 去除fgets获取的换行符
printf("请输入偏移量(0-25): ");
scanf("%d", &shift);
for (size_t i = 0; plaintext[i]; ++i) {
ciphertext[i] = caesar_encrypt(plaintext[i], shift);
}
printf("加密后的密文: %s\n", ciphertext);
printf("请输入密文解密偏移量(0-25): ");
scanf("%d", &shift);
for (size_t i = 0; ciphertext[i]; ++i) {
plaintext[i] = caesar_decrypt(ciphertext[i], shift);
}
printf("解密后的明文: %s\n", plaintext);
return 0;
}
```
在这个代码中,用户会被提示输入明文、偏移量(移位数),然后程序会分别对明文进行加密和解密操作。
阅读全文