维吉尼亚表加密C语言代码
时间: 2024-09-07 18:05:14 浏览: 63
维吉尼亚密码(Vigenère cipher),也称为多字母替换密码,是一种古老的加密技术,它通过将明文和一个密钥序列按字符进行位移来实现加密。以下是一个简单的C语言版本的维吉尼亚表加密代码示例:
```c
#include <stdio.h>
#include <string.h>
#define TABLE_SIZE 26
// 加密函数
char encrypt(char plaintext, char key) {
if (plaintext >= 'a' && plaintext <= 'z') { // 处理小写字母
int shift = key - 'a'; // 计算偏移量
if (shift >= TABLE_SIZE)
shift -= TABLE_SIZE;
return (plaintext - 'a' + shift) % TABLE_SIZE + 'a';
} else if (plaintext >= 'A' && plaintext <= 'Z') { // 大写字母同样处理
int shift = key - 'A';
if (shift >= TABLE_SIZE)
shift -= TABLE_SIZE;
return (plaintext - 'A' + shift) % TABLE_SIZE + 'A';
}
return plaintext; // 非字母字符保持不变
}
int main() {
char plaintext[100], key[100];
printf("请输入明文: ");
fgets(plaintext, sizeof(plaintext), stdin);
plaintext[strlen(plaintext) - 1] = '\0'; // 去除换行符
printf("请输入密钥: ");
fgets(key, sizeof(key), stdin);
key[strlen(key) - 1] = '\0';
for (int i = 0; plaintext[i]; i++) {
plaintext[i] = encrypt(plaintext[i], key[i % strlen(key)]);
}
printf("加密后的文本: %s\n", plaintext);
return 0;
}
```
在这个代码里,我们首先定义了一个大小为26的数组来存储字母表,然后创建`encrypt`函数用于单个字符的加密。用户输入明文和密钥,程序会遍历明文并对每个字符应用维吉尼亚加密。
注意:这只是一个基础版的实现,并未包含错误处理和密钥循环处理等复杂情况。
阅读全文