C语言编写一个程序,包含主、子函数,子函数内容对字符串数组进行加密(多个子函数多个加密方式、至少三种),主函数用于读取外部输入内容,调用子函数、打印加密结果
时间: 2024-12-02 20:19:33 浏览: 28
在C语言中,你可以创建一个简单的程序来演示多种字符串加密方式,这里我们采用常见的 Caesar Cipher (凯撒密码) 和 Vigenere Cipher (维吉尼亚密码) 进行加密,并且添加一个简单的移位加密作为基础示例。下面是一个简化的例子:
```c
#include <stdio.h>
#include <string.h>
// 移位加密函数
char shift_encrypt(char c, int shift) {
if (c >= 'a' && c <= 'z') {
return ((c - 'a' + shift) % 26) + 'a';
} else if (c >= 'A' && c <= 'Z') {
return ((c - 'A' + shift) % 26) + 'A';
}
return c; // 对于非字母字符不做处理
}
// Caesar Cipher 加密函数
void caesar_encrypt(char* str, int shift) {
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = shift_encrypt(str[i], shift);
}
}
// Vigenere Cipher 加密函数(简化版,只考虑小写字母)
void vigenere_encrypt(char* str, char key[]) {
int len = strlen(key);
for (int i = 0; i < strlen(str); ++i) {
str[i] = shift_encrypt(str[i], key[i%len]);
}
}
int main() {
char input[100];
printf("请输入原始字符串: ");
fgets(input, sizeof(input), stdin);
// 移位加密
char shifted_str[100];
int shift;
printf("选择移位量 (1-25): ");
scanf("%d", &shift);
caesar_encrypt(input, shift);
strcpy(shifted_str, input); // 备份原字符串以便对比
// 显示结果并打印
printf("\n移位加密后的字符串: %s\n", shifted_str);
// 可能需要增加其他加密方式的实现...
return 0;
}
```
在这个程序中,`caesar_encrypt` 函数实现了凯撒密码,`vigenere_encrypt` 函数是基于维吉尼亚密码的一种简单实现。你可以根据需求添加更多的加密方式。
阅读全文