C语言凯撒密码的加密与解密算法的代码实现结果分析
时间: 2024-10-18 18:19:03 浏览: 12
凯撒密码是一种简单的替换式加密技术,在C语言中实现,通常涉及将明文中的每个字符按照固定的偏移量(比如3位)向字母表循环移动。以下是基本的加密和解密函数的代码示例:
```c
#include <stdio.h>
#include <string.h>
char shift(char c, int s) {
if ('a' <= c && c <= 'z') {
return ((c - 'a' + s) % 26) + 'a';
} else if ('A' <= c && c <= 'Z') {
return ((c - 'A' + s) % 26) + 'A';
} else {
return c; // 非字母字符保持不变
}
}
void caesar_encrypt(char *plaintext, char *ciphertext, int key) {
for (int i = 0; plaintext[i] != '\0'; i++) {
ciphertext[i] = shift(plaintext[i], key);
}
ciphertext[i] = '\0'; // 添加终止符
}
void caesar_decrypt(char *ciphertext, char *plaintext, int key) {
for (int i = 0; ciphertext[i] != '\0'; i++) {
plaintext[i] = shift(ciphertext[i], -key); // 解密时,偏移量取反
}
plaintext[i] = '\0'; // 添加终止符
}
int main() {
char plain_text[] = "Hello, World!";
char cipher_text[100];
caesar_encrypt(plain_text, cipher_text, 3); // 加密
printf("Encrypted text: %s\n", cipher_text);
char decrypted_text[100];
caesar_decrypt(cipher_text, decrypted_text, 3); // 解密
printf("Decrypted text: %s\n", decrypted_text);
return 0;
}
```
分析:
1. `shift` 函数处理单个字符的移动,对于小写字母和大写字母分别计算新的位置。
2. `caesar_encrypt` 和 `caesar_decrypt` 分别用于加密和解密整个字符串,它们通过遍历输入字符串并应用 `shift` 函数实现。
3. 主函数展示了如何使用这个简单加密方法对特定文本进行加密和解密。
阅读全文