用c语言实现k<26情况下凯撒密码的加密和解密,要求支持自定义输入,输入长度无限制 。
时间: 2024-05-16 15:14:53 浏览: 12
下面是用C语言实现k<26情况下凯撒密码的加密和解密的示例代码:
```c
#include <stdio.h>
#include <string.h>
void encrypt(char *plaintext, int key);
void decrypt(char *ciphertext, int key);
int main()
{
char message[1000];
int key;
printf("请输入要加密的明文:\n");
fgets(message, sizeof(message), stdin);
printf("请输入密钥:\n");
scanf("%d", &key);
printf("加密结果为:\n");
encrypt(message, key);
printf("%s", message);
printf("解密结果为:\n");
decrypt(message, key);
printf("%s", message);
return 0;
}
void encrypt(char *plaintext, int key)
{
int i;
char ch;
for(i = 0; i < strlen(plaintext); i++)
{
ch = plaintext[i];
// 如果是小写字母
if(ch >= 'a' && ch <= 'z')
{
ch = ch + key;
if(ch > 'z')
{
ch = ch - 'z' + 'a' - 1;
}
plaintext[i] = ch;
}
// 如果是大写字母
else if(ch >= 'A' && ch <= 'Z')
{
ch = ch + key;
if(ch > 'Z')
{
ch = ch - 'Z' + 'A' - 1;
}
plaintext[i] = ch;
}
}
}
void decrypt(char *ciphertext, int key)
{
int i;
char ch;
for(i = 0; i < strlen(ciphertext); i++)
{
ch = ciphertext[i];
// 如果是小写字母
if(ch >= 'a' && ch <= 'z')
{
ch = ch - key;
if(ch < 'a')
{
ch = ch + 'z' - 'a' + 1;
}
ciphertext[i] = ch;
}
// 如果是大写字母
else if(ch >= 'A' && ch <= 'Z')
{
ch = ch - key;
if(ch < 'A')
{
ch = ch + 'Z' - 'A' + 1;
}
ciphertext[i] = ch;
}
}
}
```
这段代码中,我们定义了两个函数 `encrypt` 和 `decrypt` 分别用于加密和解密。在 `main` 函数中,我们先读入明文和密钥,然后调用 `encrypt` 函数对明文进行加密,再调用 `decrypt` 函数对加密后的密文进行解密。其中,对于每个字符,我们先判断它是不是字母,如果是小写字母则加密后在 `a` 和 `z` 之间循环,如果是大写字母则加密后在 `A` 和 `Z` 之间循环。解密过程类似,只是将加密的过程反过来即可。
注意:这段代码只支持英文字符的加密和解密,如果输入的明文包含其他字符(如数字、标点符号等),则这些字符不会被加密和解密,直接输出。如果需要支持其他字符的加密和解密,则需要修改代码。另外,这段代码也没有做输入长度的限制,如果输入的明文太长,可能会导致程序崩溃,需要注意。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)