古典密码学实验(仿射密码)C语言代码
时间: 2024-10-14 15:15:00 浏览: 122
古典密码学中的仿射密码是一种简单的替换加密算法,它通过将字母表中的每个字符按照固定规则进行线性变换来加密。下面是一个简单的C语言代码示例,实现了仿射密码的加密和解密过程:
```c
#include <stdio.h>
#include <string.h>
// 定义字符映射表(这里假设我们只处理小写字母)
char alpha[26] = "abcdefghijklmnopqrstuvwxyz";
// 加密函数
char encrypt(char c, int key) {
if (c >= 'a' && c <= 'z') {
return alpha[(alpha[c - 'a'] + key) % 26];
}
return c; // 如果输入不是字母,保持原样
}
// 解密函数
char decrypt(char c, int key) {
return encrypt(c, -key);
}
int main() {
char plaintext[100], ciphertext[100], key;
printf("请输入明文:\n");
fgets(plaintext, sizeof(plaintext), stdin); // 防止换行符干扰
plaintext[strlen(plaintext) - 1] = '\0'; // 去除末尾换行符
printf("请输入加密键(数字):\n");
scanf("%d", &key);
printf("加密前的明文: %s\n", plaintext);
for (int i = 0; plaintext[i]; i++) {
ciphertext[i] = encrypt(plaintext[i], key);
}
printf("加密后的密文: %s\n", ciphertext);
printf("请输入解密键(数字)以解密:\n");
scanf("%d", &key);
for (int i = 0; ciphertext[i]; i++) {
plaintext[i] = decrypt(ciphertext[i], key);
}
printf("解密后的原文: %s\n", plaintext);
return 0;
}
```
在这个程序中,用户首先输入明文和加密键,然后会看到加密后的密文,最后可以输入相同的解密键来恢复原始的明文。
阅读全文