C++插入式加密法问题案例

题目描述

插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。

例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。

因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。

请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。

提示:

定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(’\0’之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。

案例代码

以下是C++实现插入式加密法对应的解密算法的代码:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char ci[100], pl[100]; // 定义密文和明文的字符数组
    cin >> ci; // 输入密文字符串

    int len = strlen(ci); // 计算密文字符串长度

    for (int i = 0, j = 0; i < len; i += 2, j++) {
        pl[j] = ci[i]; // 取出偶数下标的字符,放入明文数组中
    }
    pl[len/2] = '\0'; // 在明文结尾处加上'\0',表示结束

    cout << pl << endl; // 输出明文字符串

    return 0;
}

在上面的代码中,我们定义了两个字符数组cipl,分别存放密文和明文字符串。根据插入式加密法的规则,我们只需要从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。

在循环中,我们使用变量i来表示密文字符串的下标,变量j来表示明文字符串的下标,因为明文字符串只需要存储偶数下标的字符。每次循环中,我们取出密文字符串中偶数下标的字符,放入明文数组中,并逐步构建出完整的明文字符串。最后,在明文字符串的结尾处,我们加上\0,表示字符串结束。

运行以上代码,输入密文字符串,即可得到相应的明文字符串。

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享