c语言 假设输入的均为小写字母。加密算法为:一般的字母直接+4,若输入的为w及以后的字母,回到a,b,c....(if语句)
时间: 2024-10-07 21:05:12 浏览: 17
在C语言中,你可以设计一个简单的加密算法,用于处理所有小写字母并按照描述的方式进行加密。下面是一个基本的函数实现:
```c
#include <stdio.h>
#include <ctype.h>
char encrypt(char input) {
if (input >= 'a' && input <= 'z') { // 如果字母在a-z范围内
return ((input - 'a' + 4) % 26) + 'a'; // 加4并取模以保持在小写字母范围内
} else if (input == 'w') { // 特殊情况,从'a'开始循环
return 'a';
} else {
// 对于其他字符,如y,可以考虑跳过加密或处理成其他规则
return input;
}
}
int main() {
char input_char;
printf("请输入一个字符(小写字母或w):");
scanf(" %c", &input_char);
encrypted_char = encrypt(input_char); // 调用encrypt函数
printf("加密后的字符是:%c\n", encrypted_char);
相关问题
输入 3个小写字母和1个整数n 输出 输出应该是三个解密后的英文字母的大写形式,它们将组合成凶手名字的缩写。用c语言写这个程序
在C语言中,如果你需要接收小写字母和一个整数,并基于某种规则解密字母并输出大写形式,我们需要明确解密的具体算法。假设我们有一个简单的加密规则,比如字母向后移动n位,你可以这样做:
```c
#include <stdio.h>
#include <string.h>
char encrypt(char c, int n) {
if (c >= 'a' && c <= 'z') { // 如果是小写字母
return ((c - 'a' + n) % 26) + 'A'; // 向后移动n个位置并转换为大写
}
else {
return c; // 非字母字符保持不变
}
}
void decrypt_and_output(char* input, int n) {
char decrypted[4];
for(int i = 0; i < 3; i++) {
decrypted[i] = encrypt(input[i], -n); // 解密字母(注意这里是-n,因为向后移用加法,向前移用减法)
decrypted[i] = toupper(decrypted[i]); // 转换为大写
}
decrypted[3] = '\0'; // 结束字符串
printf("%s\n", decrypted);
}
int main() {
char letters[4];
scanf("%s %d", letters, &n); // 接收3个小写字母和整数n
decrypt_and_output(letters, n);
return 0;
}
```
上述程序会读取用户输入的三个小写字母和一个整数,然后根据整数值解密字母并输出大写形式。但请注意,这只是一个基础示例,实际的解密规则取决于你的需求。
以维吉尼亚密码为蓝本,C语言实现6位密钥加密算法
好的,以下是基于维吉尼亚密码的6位密钥加密算法的C语言实现:
```c
#include <stdio.h>
#include <string.h>
void encrypt(char *plaintext, char *key, char *ciphertext) {
int i, j, k;
int plaintext_len = strlen(plaintext);
int key_len = strlen(key);
for (i = 0, j = 0; i < plaintext_len; i++, j++) {
if (j == key_len)
j = 0;
k = ((plaintext[i] - 'a') + (key[j] - 'a')) % 26;
ciphertext[i] = k + 'a';
}
ciphertext[i] = '\0';
}
int main() {
char plaintext[100], key[7], ciphertext[100];
printf("Enter plaintext: ");
scanf("%s", plaintext);
printf("Enter key (6 characters): ");
scanf("%s", key);
encrypt(plaintext, key, ciphertext);
printf("Ciphertext: %s\n", ciphertext);
return 0;
}
```
这个实现中,我们假设只加密小写字母。首先,我们定义了一个 `encrypt` 函数,它接受明文、密钥和密文的指针作为参数,并将加密后的密文存储在 `ciphertext` 中。在函数中,我们使用了一个循环来遍历明文中的每个字符,并使用密钥中的字符进行加密。为了避免密钥长度小于明文长度的情况,我们在循环中使用了一个变量 `j` 来跟踪密钥中的位置,如果 `j` 等于密钥长度,我们就将其重置为0。对于每个字符,我们将其与相应的密钥字符相加,并使用模运算将结果限制在0到25的范围内,然后将其转换为小写字母并将其存储在 `ciphertext` 中。
在 `main` 函数中,我们获取用户输入的明文和密钥,并将它们传递给 `encrypt` 函数进行加密。最后,我们将加密后的密文输出到屏幕上。
注意:这个实现中使用了一个非常简单的加密算法,容易被破解,不适合用于真正的加密应用。
阅读全文