利用数组和函数的方式完成报文的加密和解密(报文长度不超过80个字符,报文密码自己设定)使用c语言
时间: 2024-06-09 12:12:08 浏览: 6
以下是一个简单的利用数组和函数实现报文加密和解密的示例代码(报文密码为"hello"):
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 80
#define KEY "hello"
void encrypt(char *message, char *key) {
int len = strlen(key);
for (int i = 0; i < MAX_LEN; i++) {
message[i] ^= key[i % len];
}
}
void decrypt(char *message, char *key) {
encrypt(message, key); // 加密和解密使用同样的算法
}
int main() {
char message[MAX_LEN + 1];
printf("请输入要加密的报文(最多%d个字符):", MAX_LEN);
fgets(message, MAX_LEN + 1, stdin);
encrypt(message, KEY);
printf("加密后的报文为:%s\n", message);
decrypt(message, KEY);
printf("解密后的报文为:%s\n", message);
return 0;
}
```
示例输出:
```
请输入要加密的报文(最多80个字符):Hello, world!
加密后的报文为:&kyyw,k|}y1
解密后的报文为:Hello, world!
```
代码说明:
1. 定义了常量`MAX_LEN`为报文的最大长度,以及常量`KEY`为报文密码。
2. 实现了`encrypt`和`decrypt`两个函数,分别用于加密和解密报文。加密和解密使用了同样的算法,即对报文的每个字符依次进行异或运算,每次运算的密钥为密码的对应字符。如果密码长度小于报文长度,密码会被循环使用。
3. 在`main`函数中,读入要加密的报文,调用`encrypt`函数进行加密,输出加密后的报文。然后再调用`decrypt`函数进行解密,输出解密后的报文。