用c++写一个凯撒密码加解密,明密文均可以是任意ASCII
时间: 2023-06-10 10:03:42 浏览: 94
码字符。你可以提供代码示例吗?
当然可以。以下是用C语言实现凯撒密码加解密的代码示例:
```c
#include <stdio.h>
// 加密函数
void encrypt(char *message, int key) {
while (*message) {
// 对可打印字符进行加密,其他字符不变
if (*message >= ' ' && *message <= '~') {
*message = ((*message - ' ' + key) % ('~' - ' ' + 1)) + ' ';
}
message++;
}
}
// 解密函数
void decrypt(char *message, int key) {
while (*message) {
// 对可打印字符进行解密,其他字符不变
if (*message >= ' ' && *message <= '~') {
*message = ((*message - ' ' - key + ('~' - ' ' + 1)) % ('~' - ' ' + 1)) + ' ';
}
message++;
}
}
int main(void) {
char message[100];
int key;
// 获取明文和密钥
printf("Enter a message: ");
fgets(message, sizeof(message), stdin);
printf("Enter key: ");
scanf("%d", &key);
// 加密并输出密文
encrypt(message, key);
printf("Encrypted message: %s", message);
// 解密并输出明文
decrypt(message, key);
printf("Decrypted message: %s", message);
return 0;
}
```
注意,上面的代码示例所提供的加密算法不是非常严密,只是为了演示凯撒密码的基本思想。在实际使用中,需要根据具体需求选择更为安全的加密算法。
阅读全文