📜  单字母密码 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:50:28.925000             🧑  作者: Mango

单字母密码 - C 编程语言

简介

单字母密码(或称为凯撒密码)是一种很简单的加密方式,将明文中每个字母都替换为字母表中向后(或向前)移动固定数量的字母。凯撒密码一般被认为是古代罗马军队中使用的密码。

在本篇文章中,我们将通过 C 编程语言实现单字母密码。

实现

具体实现的思路如下:

  1. 获取待加密的明文和加密偏移量
  2. 对每个字母进行替换
  3. 输出密文
第一步:获取明文和偏移量
#include <stdio.h>

int main() {
    char plaintext[100];
    int offset;

    printf("请输入明文(不超过100个字符):\n");
    scanf("%s", plaintext);

    printf("请输入加密偏移量:\n");
    scanf("%d", &offset);

    return 0;
}

我们使用 printfscanf 函数分别输出提示信息和获取输入信息。

第二步:对每个字母进行替换
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 编程语言实现了单字母密码,代码简单易懂,适合初学者学习。