用c语言编写一个程序实现广义Caesar密码
时间: 2024-09-22 18:03:18 浏览: 68
凯撒密码(Caesar)的原理和算法实现(C语言)
广义凯撒密码是一种替换加密技术,它的基本思想是对明文中的每个字符按照一定偏移量进行循环移位。在C语言中,我们可以创建一个简单的程序来实现这个功能。下面是一个基础的广义凯撒密码程序示例:
```c
#include <stdio.h>
#include <string.h>
char rotate(char c, int shift) {
// 将字符转换成ASCII值,加上偏移量,然后处理超出范围的情况
if (isalpha(c)) {
if (c >= 'a') {
c = ((c - 'a' + shift) % 26) + 'a';
} else {
c = ((c - 'A' + shift) % 26) + 'A';
}
}
return c;
}
void caesar_cipher_encrypt(const char *plaintext, int shift, char *ciphertext) {
int len = strlen(plaintext);
for (int i = 0; i < len; ++i) {
ciphertext[i] = rotate(plaintext[i], shift);
}
ciphertext[len] = '\0'; // 添加结束符
}
int main() {
char plaintext[100];
printf("请输入明文:");
fgets(plaintext, sizeof(plaintext), stdin);
plaintext[strlen(plaintext) - 1] = '\0'; // 去掉行尾的换行符
int shift;
printf("请输入偏移量:");
scanf("%d", &shift);
char ciphertext[100];
caesar_cipher_encrypt(plaintext, shift, ciphertext);
printf("加密后的密文:%s\n", ciphertext);
return 0;
}
```
在这个程序中,我们首先获取用户输入的明文和偏移量,然后使用`rotate`函数对每个字符进行移位,并将结果存储在`ciphertext`数组中。注意这里仅考虑了字母的加密,非字母字符保持不变。
阅读全文