c语言字符串加密凯撒密码
时间: 2023-12-21 16:30:47 浏览: 117
以下是一个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语言解密加密凯撒密码
凯撒密码是一种简单的替换式加密技术,通过将明文中的每个字母按照固定的偏移量向后移动(例如3位),形成密文。在C语言中解密这种密码,你需要编写一段程序,根据给定的偏移量和密文字符,将其还原成原始字母。
以下是一个基本的C语言函数示例,用于解密凯撒密码:
```c
#include <stdio.h>
#include <string.h>
char decrypt_caesar_cipher(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');
} else { // 非字母字符保持不变
return c;
}
}
void caesar_decrypt(char *cipher_text, int shift) {
int len = strlen(cipher_text);
for (int i = 0; i < len; i++) {
cipher_text[i] = decrypt_caesar_cipher(cipher_text[i], shift);
}
}
int main() {
char encrypted[] = "Khoor Zruog"; // 示例密文,假设加密偏移量为3
int shift = 3;
caesar_decrypt(encrypted, shift);
printf("Decrypted text: %s\n", encrypted);
return 0;
}
```
在这个例子中,`decrypt_caesar_cipher` 函数处理单个字符的解密,`caesar_decrypt` 函数则遍历整个字符串并对每个字符应用解密规则。你可以根据需要调整`shift`变量来对应不同的加密情况。
C语言字符串简单加密
在C语言中,对字符串进行简单的加密通常涉及到字符替换或位操作等基本算法。一个常见的方法是凯撒密码(Caesar Cipher),它通过将每个字符按照固定的偏移量移动来加密。例如,你可以选择将字母表向前移动三个位置:
```c
char encrypt_char(char original) {
if (isalpha(original)) { // 检查是否是字母
int shift = 3; // 定义加密偏移量
if (original >= 'A' && original <= 'Z') { // 大写字母
return ((original - 'A' + shift) % 26) + 'A';
} else if (original >= 'a' && original <= 'z') { // 小写字母
return ((original - 'a' + shift) % 26) + 'a';
}
}
// 如果不是字母,则保持原样
return original;
}
void simple_encrypt_string(char* str, char key) {
for (int i = 0; str[i] != '\0'; i++) {
str[i] = encrypt_char(str[i]);
}
}
```
在这个例子中,`simple_encrypt_string`函数接收一个字符串和一个密钥,然后遍历字符串并对每个字符应用加密变换。
然而,这只是一个非常基础的加密方法,对于更高级的安全需求,比如处理敏感信息,应该使用专业的加密库,如OpenSSL,而不是简单的字符替换。
阅读全文