仿射密码的加解密过程完整代码c语言
时间: 2024-12-25 15:34:23 浏览: 4
在C语言中,仿射密码是一种简单的替换式加密算法,它通过线性变换将明文字符映射到密文字符上。下面是一个简单的仿射密码加密和解密的示例代码:
```c
#include <stdio.h>
#include <string.h>
// 算法函数,计算密钥对明文字符进行映射
char apply_affine(char c, int key1, int key2) {
if (c >= 'a' && c <= 'z') { // 只处理小写字母
return ((c - 'a' + key1) % 26) + 'a';
} else if (c >= 'A' && c <= 'Z') {
return ((c - 'A' + key1) % 26) + 'A';
}
return c; // 如果输入不是字母,直接返回
}
int main() {
char plaintext[100], ciphertext[100];
int key1, key2;
printf("请输入明文:");
fgets(plaintext, sizeof(plaintext), stdin);
plaintext[strlen(plaintext)-1] = '\0'; // 去除换行符
printf("请输入加密键(两个数字之间用空格隔开):");
scanf("%d %d", &key1, &key2);
for (int i = 0; plaintext[i]; ++i) {
ciphertext[i] = apply_affine(plaintext[i], key1, key2);
}
ciphertext[strlen(ciphertext)] = '\0'; // 结束字符串
printf("加密后的密文:%s\n", ciphertext);
// 解密过程
for (int i = 0; ciphertext[i]; ++i) {
ciphertext[i] = apply_affine(ciphertext[i], key1, key2); // 使用相同的加密键进行解密
}
printf("解密后的明文:%s\n", ciphertext);
return 0;
}
```
在这个程序中,用户首先输入明文,然后输入一对加密键(两个数字)。`apply_affine`函数负责执行加密操作。为了解密,我们再次使用相同的加密键。
阅读全文