如何用C语言设计一个基础的加密(如替换密码)和解密功能的简单程序?
时间: 2024-11-15 21:32:05 浏览: 27
在C语言中,我们可以创建一个简单的替换密码(Caesar Cipher)加密和解密程序。替换密码是一种古老的加密技术,它通过将明文中的每个字符替换为字母表中固定位置之后的字符来达到加密的目的。这里是一个基本的实现:
```c
#include <stdio.h>
#include <ctype.h>
char encrypt(char c, int shift) {
if (isalpha(c)) {
// 对大写字母和小写字母处理不同
if (isupper(c))
return ((c - 'A' + shift) % 26) + 'A';
else
return ((c - 'a' + shift) % 26) + 'a';
}
else
return c; // 非字母字符不变
}
char decrypt(char c, int shift) {
return encrypt(c, -shift);
}
int main() {
char message[100], encrypted[100], key;
printf("请输入明文:\n");
fgets(message, sizeof(message), stdin);
printf("请输入密钥(整数, 0-25): ");
scanf("%d", &key);
// 加密
strcpy(encrypted, message);
for (size_t i = 0; i < strlen(message); ++i) {
encrypted[i] = encrypt(encrypted[i], key);
}
printf("加密后的消息:\n%s\n", encrypted);
// 解密
printf("输入解密密钥(保持一致):\n");
scanf("%d", &key);
for (size_t i = 0; i < strlen(encrypted); ++i) {
encrypted[i] = decrypt(encrypted[i], key);
}
printf("解密后的消息:\n%s\n", encrypted);
return 0;
}
```
在这个程序中,`encrypt`函数负责加密,`decrypt`函数用于解密。用户首先输入原始字符串(明文),然后选择一个密钥(0到25之间的整数)。加密后的内容存储在`encrypted`数组中,并打印出来。接着再次请求相同的密钥解密。
阅读全文