用c语言实现凯撒密码
时间: 2024-09-02 09:03:10 浏览: 86
使用C语言实现凯撒密码的研究.docx
凯撒密码是一种简单的替换加密技术,通过将明文中的每个字符按照固定的偏移量(密钥)向字母表循环移动来实现加密。下面是一个简单的C语言函数,用于实现凯撒密码:
```c
#include <stdio.h>
#include <ctype.h>
char caesar_cipher(char char_to_encrypt, int shift) {
// 将大写字母转换为小写以便处理
if (isupper(char_to_encrypt)) {
char_to_encrypt = tolower(char_to_encrypt);
}
// 避免超出英文字符范围
char encrypted_char;
if (char_to_encrypt >= 'a' && char_to_encrypt <= 'z') {
encrypted_char = ((char_to_encrypt - 'a' + shift) % 26) + 'a';
} else if (char_to_encrypt >= 'A' && char_to_encrypt <= 'Z') {
encrypted_char = ((char_to_encrypt - 'A' + shift) % 26) + 'A';
} else {
encrypted_char = char_to_encrypt; // 对于非字母字符不做处理
}
return encrypted_char;
}
void encrypt_ciphertext(const char *plaintext, int shift, char *ciphertext) {
for (int i = 0; plaintext[i] != '\0'; ++i) {
ciphertext[i] = caesar_cipher(plaintext[i], shift);
}
ciphertext[i] = '\0'; // 结束字符串
}
int main() {
char input[100];
printf("请输入明文:");
fgets(input, sizeof(input), stdin);
int key;
printf("请输入密钥(1-25):");
scanf("%d", &key);
char encrypted[100];
encrypt_ciphertext(input, key, encrypted);
printf("加密后的密文:%s\n", encrypted);
return 0;
}
```
在这个程序中,`caesar_cipher`函数负责单个字符的加密,而`encrypt_ciphertext`函数则遍历整个输入字符串并应用凯撒密码。
阅读全文