Vigenere密码算法的加解密实现,c语言
时间: 2024-09-26 21:13:14 浏览: 61
Vigenère密码是一种古典的加密技术,它通过将明文和一个称为“钥匙”的固定文本重复多次并异或运算来实现。这里是一个简单的Vigenère加密和解密的C语言实现:
```c
#include <stdio.h>
#include <string.h>
// 加密函数
void encrypt(char* plaintext, char* key, char* ciphertext) {
int len_plaintext = strlen(plaintext);
int len_key = strlen(key);
for (int i = 0; i < len_plaintext; ++i) {
ciphertext[i] = plaintext[i] ^ key[i % len_key];
}
}
// 解密函数
void decrypt(char* ciphertext, char* key, char* plaintext) {
encrypt(ciphertext, key, plaintext); // 因为解密是加密的逆过程,所以直接调用encrypt即可
}
int main() {
char plaintext[] = "Hello, World!";
char key[] = "Key";
char ciphertext[256];
encrypt(plaintext, key, ciphertext);
printf("Encrypted message: %s\n", ciphertext);
decrypt(ciphertext, key, plaintext);
printf("Decrypted message: %s\n", plaintext);
return 0;
}
```
在这个例子中,`encrypt`函数接收明文、密钥和一个临时的加密结果数组,然后对每个字符执行异或操作。`decrypt`函数则简单地调用了`encrypt`函数,因为解密就是将密文通过相同的密钥进行一次加密。
阅读全文