📅  最后修改于: 2023-12-03 14:50:28.925000             🧑  作者: Mango
单字母密码(或称为凯撒密码)是一种很简单的加密方式,将明文中每个字母都替换为字母表中向后(或向前)移动固定数量的字母。凯撒密码一般被认为是古代罗马军队中使用的密码。
在本篇文章中,我们将通过 C 编程语言实现单字母密码。
具体实现的思路如下:
#include <stdio.h>
int main() {
char plaintext[100];
int offset;
printf("请输入明文(不超过100个字符):\n");
scanf("%s", plaintext);
printf("请输入加密偏移量:\n");
scanf("%d", &offset);
return 0;
}
我们使用 printf
和 scanf
函数分别输出提示信息和获取输入信息。
for (int i = 0; plaintext[i] != '\0'; i++) {
if (plaintext[i] >= 'a' && plaintext[i] <= 'z') {
plaintext[i] = (plaintext[i] - 'a' + offset) % 26 + 'a';
} else if (plaintext[i] >= 'A' && plaintext[i] <= 'Z') {
plaintext[i] = (plaintext[i] - 'A' + offset) % 26 + 'A';
}
}
我们使用 for 循环对明文中的所有字母进行替换,注意要判断字母是否是小写字母或大写字母。
printf("加密后的密文为:%s\n", plaintext);
最后,我们使用 printf
函数输出加密后的密文。
#include <stdio.h>
int main() {
char plaintext[100];
int offset;
printf("请输入明文(不超过100个字符):\n");
scanf("%s", plaintext);
printf("请输入加密偏移量:\n");
scanf("%d", &offset);
for (int i = 0; plaintext[i] != '\0'; i++) {
if (plaintext[i] >= 'a' && plaintext[i] <= 'z') {
plaintext[i] = (plaintext[i] - 'a' + offset) % 26 + 'a';
} else if (plaintext[i] >= 'A' && plaintext[i] <= 'Z') {
plaintext[i] = (plaintext[i] - 'A' + offset) % 26 + 'A';
}
}
printf("加密后的密文为:%s\n", plaintext);
return 0;
}
本篇文章通过 C 编程语言实现了单字母密码,代码简单易懂,适合初学者学习。