凯撒(Caesar)加密解密算法C/C++实现
时间: 2024-10-21 07:09:05 浏览: 137
Caesar(凯撒)加密解密算法
5星 · 资源好评率100%
凯撒(Caesar)加密解密算法是一种简单的替换式密码,也称为移位密码。它通过将字母表中的每个字符向后(加密)或向前(解密)按照固定数量的位置移动来进行编码。例如,如果移位量是3,A会变成D,B变成E,以此类推。
以下是一个简单的C语言版本的实现:
```c
#include <stdio.h>
#include <ctype.h>
char caesar_encrypt(char c, int shift) {
if (isalpha(c)) {
c = ((c - 'A' + shift) % 26) + 'A';
if (islower(c))
return c;
else
return c - ('Z' - 'A');
}
else
return c; // 非字母字符保持不变
}
char caesar_decrypt(char c, int shift) {
return caesar_encrypt(c, -shift);
}
int main() {
char plaintext[100], ciphertext[100];
int shift, i;
printf("Enter the text to encrypt: ");
fgets(plaintext, sizeof(plaintext), stdin);
printf("Enter the shift value: ");
scanf("%d", &shift);
for (i = 0; plaintext[i]; ++i) {
ciphertext[i] = caesar_encrypt(plaintext[i], shift);
}
ciphertext[i] = '\0'; // 结束字符串
printf("Encrypted text: %s\n", ciphertext);
printf("Enter the same shift value to decrypt: ");
scanf("%d", &shift);
for (i = 0; ciphertext[i]; ++i) {
plaintext[i] = caesar_decrypt(ciphertext[i], shift);
}
plaintext[i] = '\0'; // 结束字符串
printf("Decrypted text: %s\n", plaintext);
return 0;
}
```
在这个程序中,`caesar_encrypt`函数用于加密,`caesar_decrypt`用于解密。用户输入明文、移位值,然后程序会生成相应的密文,并提示用户再次输入相同的移位值来解密。
阅读全文