移位密码加密解密完整c语言算法
时间: 2024-09-25 19:20:49 浏览: 38
移位密码(也称为 Caesar Cipher),是一种简单的替换式加密技术,通过将明文中的每个字符按照固定偏移量进行位移来达到加密的目的。以下是使用C语言实现移位密码加密和解密的基本算法:
### 加密部分(右移)
```c
char encrypt(char c, int shift) {
if (c >= 'a' && c <= 'z') { // 对小写字母操作
c = (c - 'a' + shift) % 26 + 'a';
} else if (c >= 'A' && c <= 'Z') { // 对大写字母操作
c = (c - 'A' + shift) % 26 + 'A';
}
return c;
}
```
### 解密部分(左移)
```c
char decrypt(char c, int shift) {
if (c >= 'a' && c <= 'z') { // 对小写字母操作
c = (c - 'a' - shift + 26) % 26 + 'a';
} else if (c >= 'A' && c <= 'Z') { // 对大写字母操作
c = (c - 'A' - shift + 26) % 26 + 'A';
}
return c;
}
```
**完整的加密函数示例:**
```c
void encrypt_string(char *input, char *output, int shift) {
for (int i = 0; input[i] != '\0'; i++) {
output[i] = encrypt(input[i], shift);
}
output[i] = '\0'; // 结束字符串
}
// 示例调用
char input[] = "Hello, World!";
int shift = 3;
char output[50];
encrypt_string(input, output, shift);
printf("Encrypted message: %s\n", output);
```
**完整的解密函数示例:**
```c
void decrypt_string(char *input, char *output, int shift) {
for (int i = 0; input[i] != '\0'; i++) {
output[i] = decrypt(input[i], shift);
}
output[i] = '\0'; // 结束字符串
}
// 示例调用
char decrypted_input[50];
decrypt_string(output, decrypted_input, shift);
printf("Decrypted message: %s\n", decrypted_input);
```
阅读全文