用c语言写上下折叠和左右折叠加密的加密和解密过程
时间: 2024-11-09 12:20:18 浏览: 10
在C语言中编写文本的上下折叠加密(如Caesar Cipher或简单的位移密码)和左右折叠加密解密的过程相对简单。这里以一个简单的位移加密(每个字符向左或右移动固定位置)为例,假设我们只做水平方向的加密:
```c
#include <stdio.h>
#include <string.h>
// 加密函数
char encrypt_left(char c, int shift) {
if (c >= 'a' && c <= 'z') { // 如果是小写字母
return c - shift; // 向左移动shift位
} else if (c >= 'A' && c <= 'Z') { // 大写字母同样处理
return c - shift - ('A' - 'a');
} else { // 非字母字符保持不变
return c;
}
}
// 解密函数
char decrypt_left(char c, int shift) {
return encrypt_left(c, -shift);
}
int main() {
char plaintext[100], ciphertext[100];
int shift = 3; // 加密步长
printf("请输入明文:");
fgets(plaintext, sizeof(plaintext), stdin); // 输入明文,忽略换行符
plaintext[strlen(plaintext) - 1] = '\0'; // 去除多余的换行符
for (size_t i = 0; i < strlen(plaintext); i++) {
ciphertext[i] = encrypt_left(plaintext[i], shift);
}
printf("加密后的密文:%s\n", ciphertext);
// 解密示例
for (size_t i = 0; i < strlen(ciphertext); i++) {
ciphertext[i] = decrypt_left(ciphertext[i], shift);
}
printf("解密后的明文:%s\n", ciphertext); // 输出解密结果
return 0;
}
```
这个程序会读取用户输入的明文,将每个字符向左移动`shift`位进行加密,并随后提供解密选项还原回原样。
阅读全文