帮我写一下仿射密码的c语言程序
时间: 2023-06-02 10:07:51 浏览: 54
好的,以下是仿射密码的C语言程序:
```c
#include <stdio.h>
int main() {
char original_text[1000], encrypted_text[1000], decrypted_text[1000];
int i, a, b;
printf("请输入明文:");
gets(original_text);
printf("请输入a、b值(需满足a与26互质):");
scanf("%d%d", &a, &b);
//加密
for (i=0; original_text[i]!='\0'; i++) {
if (original_text[i]>='A' && original_text[i]<='Z') {
encrypted_text[i] = (a * (original_text[i] - 'A') + b) % 26 + 'A';
} else if (original_text[i]>='a' && original_text[i]<='z') {
encrypted_text[i] = (a * (original_text[i] - 'a') + b) % 26 + 'a';
} else {
encrypted_text[i] = original_text[i];
}
}
encrypted_text[i] = '\0';
printf("加密后的密文是:%s\n", encrypted_text);
//解密
for (i=0; encrypted_text[i]!='\0'; i++) {
if (encrypted_text[i]>='A' && encrypted_text[i]<='Z') {
decrypted_text[i] = ((encrypted_text[i] - 'A' - b) * (a < 0 ? a+26 : a) % 26) + 'A';
} else if (encrypted_text[i]>='a' && encrypted_text[i]<='z') {
decrypted_text[i] = ((encrypted_text[i] - 'a' - b) * (a < 0 ? a+26 : a) % 26) + 'a';
} else {
decrypted_text[i] = encrypted_text[i];
}
}
decrypted_text[i] = '\0';
printf("解密后的明文是:%s\n", decrypted_text);
return 0;
}
```
请注意,本程序中的a和b需满足a和26互质,否则可能无法正确解密。此外,本程序存在缺陷,可能会受到攻击,建议不要用于严格的加密场景。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![apk](https://img-home.csdnimg.cn/images/20210720083646.png)