题目描述
插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。
例如,对于明文: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;
}
在上面的代码中,我们定义了两个字符数组ci
和pl
,分别存放密文和明文字符串。根据插入式加密法的规则,我们只需要从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。
在循环中,我们使用变量i
来表示密文字符串的下标,变量j
来表示明文字符串的下标,因为明文字符串只需要存储偶数下标的字符。每次循环中,我们取出密文字符串中偶数下标的字符,放入明文数组中,并逐步构建出完整的明文字符串。最后,在明文字符串的结尾处,我们加上\0
,表示字符串结束。
运行以上代码,输入密文字符串,即可得到相应的明文字符串。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END