用C语言写一个替代密码算法
时间: 2023-08-04 15:13:57 浏览: 44
以下是用C语言实现的一个简单的替代密码算法:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
char* encrypt(char* message, char* key);
char* decrypt(char* cipher, char* key);
int main() {
char message[MAX_LEN], key[MAX_LEN], cipher[MAX_LEN];
printf("Enter the message to encrypt: ");
fgets(message, MAX_LEN, stdin);
printf("Enter the encryption key: ");
fgets(key, MAX_LEN, stdin);
char* encrypted_message = encrypt(message, key);
printf("Encrypted message: %s", encrypted_message);
char* decrypted_message = decrypt(encrypted_message, key);
printf("Decrypted message: %s", decrypted_message);
return 0;
}
char* encrypt(char* message, char* key) {
int i, j;
char* cipher = malloc(strlen(message) + 1);
for (i = 0; i < strlen(message); i++) {
j = i % strlen(key);
cipher[i] = (message[i] + key[j]) % 256;
}
cipher[i] = '\0';
return cipher;
}
char* decrypt(char* cipher, char* key) {
int i, j;
char* message = malloc(strlen(cipher) + 1);
for (i = 0; i < strlen(cipher); i++) {
j = i % strlen(key);
message[i] = (cipher[i] - key[j] + 256) % 256;
}
message[i] = '\0';
return message;
}
```
该算法使用输入的密钥来加密和解密消息。加密过程将消息中的每个字符与密钥中的对应字符进行加法运算,然后进行模256运算,并将结果存储在密文中。解密过程将密文中的每个字符与密钥中的对应字符进行减法运算,然后进行模256运算,并将结果存储在明文中。