为防止信息窃取,需要采用加密技术将电文加密变成密文。恺撒密码是一种简单的替换加密技术,其规则是将明文中的所有字母都在字母表上偏移offset位后被替换成密文:当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。 输入格式: 从键盘读入一个字符串(少于80个字符),以回车结束。再读入一个整数offset。 输出格式: 输出加密后的字符串。C语言
时间: 2024-03-14 10:48:26 浏览: 20
以下是使用 C 语言实现恺撒密码加密的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[80];
int offset;
// 读取输入的字符串和偏移量
printf("请输入要加密的字符串:");
fgets(str, 80, stdin);
printf("请输入偏移量:");
scanf("%d", &offset);
// 对字符串进行加密
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = 'a' + (str[i] - 'a' + offset + 26) % 26;
} else if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = 'A' + (str[i] - 'A' + offset + 26) % 26;
}
}
// 输出加密后的字符串
printf("加密后的字符串:%s", str);
return 0;
}
```
假设我们输入的字符串为 "hello, world!",偏移量为 3,则输出的加密后的字符串为 "khoor, zruog!"。
相关问题
6-18 电码加密 分数 10 作者 余贞侠 单位 成都信息工程大学 为防止信息窃取,需要采用加密技术将电文加密变成密文。恺撒密码是一种简单的替换加密技术,其规则是将明文中的所有字母都在字母表上偏移offset位后被替换成密文:当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,调用函数fun()后用凯撒密码将其加密后输出。 函数接口定义: void fun ( char *Pstr, const
char *Pstr, const int offset) {
int len = strlen(Pstr);
for(int i = 0; i < len; i++) {
if(isalpha(Pstr[i])) { // 判断是否为字母
if(isupper(Pstr[i])) { // 判断是否为大写字母
Pstr[i] = (Pstr[i] - 'A' + offset + 26) % 26 + 'A'; // 加密
} else {
Pstr[i] = (Pstr[i] - 'a' + offset + 26) % 26 + 'a'; // 加密
}
}
}
printf("%s", Pstr); // 输出加密后的字符串
}
用c语言完成这个任务 为防止信息窃取,需要采用加密技术将电文加密变成密文。恺撒密码是一种简单的替换加密技术,其规则是将明文中的所有字母都在字母表上偏移offset位后被替换成密文:当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,调用函数fun()后用凯撒密码将其加密后输出。 函数接口定义: void fun ( char *Pstr, const int n ); 其中 Pstr 和 n 都是用户传入的参数。 Pstr 指向要加密的字符串; n 的范围不超过整数。
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <ctype.h>
void fun(char *Pstr, const int n) {
int i = 0;
char c;
while (Pstr[i] != '\0') {
c = Pstr[i];
if (isalpha(c)) {
if (islower(c)) {
c = 'a' + (c - 'a' + n + 26) % 26;
} else {
c = 'A' + (c - 'A' + n + 26) % 26;
}
}
putchar(c);
i++;
}
}
int main() {
char str[80];
int offset;
printf("请输入要加密的字符串:");
fgets(str, 80, stdin);
printf("请输入偏移量:");
scanf("%d", &offset);
fun(str, offset);
return 0;
}
```
在上面的代码中,我们先通过 `fgets()` 函数读入要加密的字符串,然后通过 `scanf()` 函数读入偏移量。接着,在 `fun()` 函数中,我们遍历字符串中的每一个字符,如果它是字母,就将它加上偏移量并加密成另一个字母。最后,我们通过 `putchar()` 函数输出加密后的字符。
值得注意的是,由于恺撒密码是一种简单的替换加密技术,因此它的加密方法也非常简单,只需要将明文中的每个字母都替换成密文即可。在实现时,我们可以使用 ASCII 码表来实现字母的加密和解密,具体方法是将字母的 ASCII 码加上偏移量,然后将结果对 26 取模,最后再加上对应字母的 ASCII 码。需要注意的是,当偏移量为负数时需要加上 26,以保证结果仍在字母表中。