c语言维吉尼亚密码加密全代码
时间: 2024-10-25 08:09:30 浏览: 7
维吉尼亚密码的加密和解密C语言实现
3星 · 编辑精心推荐
维吉尼亚密码(Vigenere Cipher),也称为凯撒密码的一种变体,是一种利用密钥对明文进行多次替换的加密技术。在C语言中实现维吉尼亚密码,首先需要创建一个加密函数,它接受明文、密钥和加密长度作为输入,然后逐字符加密。这里提供一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
char shift(char c, char key) {
key = (key % 26); // 循环处理字母表范围
if ('a' <= c && c <= 'z') {
return ((c - 'a' + key) % 26) + 'a';
} else if ('A' <= c && c <= 'Z') {
return ((c - 'A' + key) % 26) + 'A';
}
return c; // 如果不是字母保持不变
}
void vigenere_encrypt(char* plaintext, const char* key, int len) {
for (int i = 0; i < len; ++i) {
printf("%c", shift(plaintext[i], key[i % strlen(key)]));
}
}
int main() {
char plaintext[] = "Hello, World!";
const char key[] = "KEY";
int len = strlen(plaintext);
printf("Original message: %s\n", plaintext);
vigenere_encrypt(plaintext, key, len);
printf("Encrypted message: ");
return 0;
}
```
这个代码示例中,`shift` 函数负责单个字符的移位,`vigenere_encrypt` 函数则应用了整个密钥对每个字符进行加密。注意,这里的密钥必须与明文等长,或者密钥循环使用。
阅读全文