维吉尼亚密码加解密c语言简单代码
时间: 2024-11-28 17:21:55 浏览: 36
维吉尼亚密码是一种基于字母替换的古典加密技术,通常需要一个称为“凯撒表”的密钥来进行加解密。下面是一个简单的C语言代码示例,展示了如何实现维吉尼亚密码的加解密过程:
```c
#include <stdio.h>
#include <string.h>
#define ALPHABET_SIZE 26
// 加密函数
char encrypt(char c, char key) {
if (c >= 'A' && c <= 'Z') { // 大写字母
return ((c - 'A' + key) % ALPHABET_SIZE) + 'A';
} else if (c >= 'a' && c <= 'z') { // 小写字母
return ((c - 'a' + key) % ALPHABET_SIZE) + 'a';
}
return c; // 非字母字符保持不变
}
// 解密函数
char decrypt(char c, char key) {
return encrypt(c, -key);
}
int main() {
char plaintext[100], ciphertext[100];
char key[ALPHABET_SIZE];
printf("请输入明文:\n");
fgets(plaintext, sizeof(plaintext), stdin);
printf("请输入密钥(大小写字母):\n");
fgets(key, sizeof(key), stdin);
key[strlen(key) - 1] = '\0'; // 去除换行符
// 对明文进行加密
for (int i = 0; plaintext[i]; ++i) {
ciphertext[i] = encrypt(plaintext[i], key[i]);
}
ciphertext[strlen(plaintext)] = '\0';
printf("加密后的密文为:\n%s\n", ciphertext);
// 如果需要,也可以在这里添加一个选项来直接解密
// char decrypted[] = ...;
// printf("解密后的明文为:\n%s\n", decrypted);
return 0;
}
```
这个程序首先提示用户输入明文和密钥,然后使用`encrypt`函数对每个字符进行加密,并打印出结果。如果你想实时解密,可以在代码里添加相应的部分。
阅读全文
相关推荐















