用C语言编写字母密码
时间: 2024-10-10 16:08:21 浏览: 33
在C语言中,我们同样可以编写字母密码的加密算法。这里以凯撒密码(Caesar Cipher)为例,它是最简单的替换式加密,通过将字母向右移动固定的位置来加密。下面是一个简单的凯撒密码实现:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
char encrypt(char c, int shift);
char decrypt(char c, int shift);
int main() {
char plaintext[100];
char ciphertext[100];
printf("请输入明文:");
fgets(plaintext, sizeof(plaintext), stdin); // 读入一行字符串
plaintext[strlen(plaintext) - 1] = '\0'; // 去除换行符
int shift;
printf("请输入移位数:");
scanf("%d", &shift);
// 加密
int len = strlen(plaintext);
for (int i = 0; i < len; ++i) {
ciphertext[i] = encrypt(plaintext[i], shift);
}
ciphertext[len] = '\0';
printf("加密后的密文:%s\n", ciphertext);
// 解密
for (int i = 0; i < len; ++i) {
plaintext[i] = decrypt(ciphertext[i], shift);
}
plaintext[len] = '\0';
printf("解密后的明文:%s\n", plaintext);
return 0;
}
// 加密和解密函数
char encrypt(char c, int shift) {
if (isalpha(c)) {
if (c >= 'a' && c <= 'z') {
return static_cast<char>((c - 'a' + shift) % 26 + 'a');
} else if (c >= 'A' && c <= 'Z') {
return static_cast<char>((c - 'A' + shift) % 26 + 'A');
}
}
return c; // 非字母字符直接返回
}
char decrypt(char c, int shift) {
return encrypt(c, -shift); // 解密时,移位数取负
}
```
这个程序会提示用户输入明文和移位数,然后对明文字母进行加密并显示加密后的结果,接着再进行解密。
阅读全文