void Caesar(char str[]/*待加密字符串*/, int k/*偏移量*/, int bEncode /*1编码,0解码*/) { int i=0;
时间: 2024-01-17 16:19:11 浏览: 183
Caesar密码是一种古典密码,它通过将字母按照一定的偏移量进行替换来进行加密和解密。具体来说,对于每个字母,将其按照偏移量k进行移动,如果是加密操作,则向后移动k个位置,如果是解密操作,则向前移动k个位置。这样可以实现简单的字母替换加密。
下面是一个C语言实现的Caesar密码函数的示例代码:
```c
void Caesar(char str[], int k, int bEncode)
{
int i = 0;
while (str[i] != '\0') {
if (str[i] >= 'A' && str[i] <= 'Z') {
if (bEncode) {
str[i] = (str[i] - 'A' + k) % 26 + 'A'; // 加密操作
} else {
str[i] = (str[i] - 'A' - k + 26) % 26 + 'A'; // 解密操作
}
} else if (str[i] >= 'a' && str[i] <= 'z') {
if (bEncode) {
str[i] = (str[i] - 'a' + k) % 26 + 'a'; // 加密操作
} else {
str[i] = (str[i] - 'a' - k + 26) % 26 + 'a'; // 解密操作
}
}
i++;
}
}
```
这个函数接受三个参数:待加密/解密的字符串、偏移量k和一个标志位bEncode,用于指示是加密还是解密操作。函数会对字符串中的每个字母进行加密或解密,并将结果直接修改在原字符串中。
示例调用代码如下:
```c
char str[] = "Hello, World!";
int k = 3;
int bEncode = 1; // 加密操作
Caesar(str, k, bEncode);
printf("加密后的字符串:%s\n", str); // 输出:Khoor, Zruog!
```
请注意,这只是Caesar密码的一个简单实现,实际应用中可能需要考虑更多的情况,比如非字母字符的处理、偏移量的范围等。
阅读全文