古典密码C语言实现解密
时间: 2024-12-24 18:40:31 浏览: 31
古典密码通常是指一些早期的加密技术,如凯撒密码、维吉尼亚密码等。在这里,我们以简单的凯撒密码为例,它是一种替换式加密,通过将字母表中的每个字母按照固定位移进行替换。
在C语言中,我们可以编写一个函数来解密凯撒密码。例如,如果位移(shift)为3,那么'A'会变成'D','B'会变成'E',以此类推。以下是一个基本的凯撒密码解密函数实现:
```c
#include <stdio.h>
#include <string.h>
char decrypt_caesar(char c, int shift) {
if ('A' <= c && c <= 'Z') { // 处理大写字母
c = ((c - 'A') - shift + 26) % 26 + 'A';
} else if ('a' <= c && c <= 'z') { // 处理小写字母
c = ((c - 'a') - shift + 26) % 26 + 'a';
}
return c;
}
void caesar_cipher_decrypt(const char* encrypted, int shift, char* decrypted) {
int len = strlen(encrypted);
for (int i = 0; i < len; i++) {
decrypted[i] = decrypt_caesar(encrypted[i], shift);
}
decrypted[len] = '\0'; // 添加终止符
}
int main() {
const char* encrypted = "Khoor, Zruog!";
int shift = 3;
char decrypted[50];
caesar_cipher_decrypt(encrypted, shift, decrypted);
printf("Decrypted message: %s\n", decrypted);
return 0;
}
```
在这个程序中,`decrypt_caesar`函数负责单个字符的解密,`caesar_cipher_decrypt`函数则处理整个字符串。用户可以设置不同的位移值来进行解密。
阅读全文