c语言字符串加密凯撒密码
时间: 2023-12-21 07:30:47 浏览: 55
以下是一个C语言实现凯撒密码加密的例子:
```c
#include <stdio.h>
#include <ctype.h>
void caesar(char *arr) {
while (*arr != '\0') {
if (isupper(*arr)) {
*arr = ((*arr - 'A' + 3) % 26) + 'A'; // 大写字母偏移量为3
} else if (islower(*arr)) {
*arr = ((*arr - 'a' + 13) % 26) + 'a'; // 小写字母偏移量为13
}
arr++;
}
}
int main() {
char arr[50];
while (1) {
scanf("%s", arr);
if (arr[0] == '!') {
break;
}
caesar(arr);
printf("%s\n", arr);
}
return 0;
}
```
该程序通过调用`caesar`函数实现了凯撒密码加密。`caesar`函数接受一个字符串指针作为参数,遍历字符串中的每个字符,如果是大写字母则将其偏移3个位置,如果是小写字母则将其偏移13个位置。最后,程序通过调用`printf`函数输出加密后的字符串。
相关问题
c语言凯撒密码加密
凯撒密码是一种古老的加密方法,它通过将明文中的每个字母按照一定的偏移量进行替换来实现加密。下面是一个用 C 语言实现凯撒密码加密的例子:
```
#include <stdio.h>
#include <string.h>
void caesar_encrypt(char *plaintext, int key);
int main()
{
char plaintext[100];
int key;
printf("请输入明文:");
fgets(plaintext, 100, stdin);
printf("请输入密钥:");
scanf("%d", &key);
caesar_encrypt(plaintext, key);
printf("密文为:%s\n", plaintext);
return 0;
}
void caesar_encrypt(char *plaintext, int key)
{
int len = strlen(plaintext);
for (int i = 0; i < len; i++) {
if (plaintext[i] >= 'a' && plaintext[i] <= 'z') {
plaintext[i] = 'a' + (plaintext[i] - 'a' + key) % 26;
} else if (plaintext[i] >= 'A' && plaintext[i] <= 'Z') {
plaintext[i] = 'A' + (plaintext[i] - 'A' + key) % 26;
}
}
}
```
代码中的 `caesar_encrypt` 函数用来实现加密,它接收两个参数:明文字符串和密钥。在函数中,我们先计算明文字符串的长度,然后遍历字符串中的每个字符,如果是小写字母,就将其替换成按照密钥偏移后的字母,如果是大写字母,同样进行替换。最后,加密结果就保存在原来的明文字符串中。
用C语言写一个凯撒密码
可以使用以下代码实现凯撒密码:
```c
#include <stdio.h>
#include <string.h>
void caesar_cipher(char *str, int shift) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = 'a' + (str[i] - 'a' + shift) % 26;
} else if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = 'A' + (str[i] - 'A' + shift) % 26;
}
}
}
int main() {
char str[100];
int shift;
printf("请输入明文:");
scanf("%s", str);
printf("请输入偏移量:");
scanf("%d", &shift);
caesar_cipher(str, shift);
printf("密文为:%s\n", str);
return 0;
}
```
这段代码可以让用户输入一个字符串和一个偏移量,然后对字符串进行凯撒密码加密,并输出加密后的结果。