凯撒密码c语言程序PTA
时间: 2024-11-28 14:14:13 浏览: 52
凯撒密码(Caesar Cipher),也称为移位密码,是一种简单的替换式加密技术,最早由古罗马将军盖乌斯·儒略·凯撒所使用。在这种加密方法中,明文中的每个字母按照固定的字母表顺序向后(或向前)移动固定的位置,形成密文。
在C语言中编写一个简单的凯撒密码程序,可以分为以下步骤:
1. 定义明文和密钥(位移量):用户需要输入要加密的文本(明文)以及加密位移值。
```c
#include <stdio.h>
#include <string.h>
char shift(char c, int key) {
// 根据ASCII码处理大写和小写字母
if ('a' <= c && c <= 'z') {
return (c - 'a' + key) % 26 + 'a';
} else if ('A' <= c && c <= 'Z') {
return (c - 'A' + key) % 26 + 'A';
} else {
return c; // 非字母字符保持不变
}
}
```
2. 加密函数:遍历输入的字符串,对每个字符应用shift函数。
```c
void caesar_cipher_encrypt(char* plaintext, int key, char* ciphertext) {
for (int i = 0; plaintext[i] != '\0'; i++) {
ciphertext[i] = shift(plaintext[i], key);
}
ciphertext[i] = '\0'; // 结束符
}
```
3. 主函数:接收用户输入,调用加密函数,并打印出密文。
```c
int main() {
char plaintext[100], ciphertext[100];
printf("请输入明文:");
fgets(plaintext, sizeof(plaintext), stdin); // 注意去掉换行符
plaintext[strlen(plaintext) - 1] = '\0';
printf("请输入密钥(位移量):");
int key;
scanf("%d", &key);
caesar_cipher_encrypt(plaintext, key, ciphertext);
printf("加密后的密文是:\n%s\n", ciphertext);
return 0;
}
```
阅读全文