一、查看移位密码算法运行结果并学习核心算法
1.1 点击【移位密码.exe】,选择【0】对明文进行加密。如图1所示
图1
1.2 重新运行程序,选择【1】,对密文进行解密。如图2所示
图2
1.3 移位密码的核心算法如下所示。
//#include \ #include
void ISD_yiwei_Secret(string &code, int k) {
int i;
for (i = 0; i if ((code[i] + k)>'z') { } else { code[i] = code[i] + k; code[i] = ((code[i] + k) % 'z') + 'a' - 1; } } } code[i] = code[i] - 32; void ISD_yiwei_Public(string &code, int k) { } int main() { int k; string code; cout << \请选择 \\n移位加密:0 , 解密 : 1 : \; int n; cin >> n; switch (n) { case 0: cout << \请输入密匙(0 ~ 26), k = \; cin >> k; cout << \请输入原文:\ << endl; cin >> code; ISD_yiwei_Secret(code, k); cout << \密文为:\\n\ << code << endl; break; case 1: cout << \请输入密文:\ << endl; cin >> code; cout << \请输入密匙(0 ~ 26), k = \; cin >> k; ISD_yiwei_Public(code, k); cout << \原文为:\\n\ << code << endl; int i; for (i = 0; i if ((code[i] - k)<'A') { } else { } code[i] = code[i] + 32; code[i] = code[i] - k; code[i] = 'Z' - ('A' - (code[i] - k)) + 1; } } break; default: cerr << \输入错误! \\n\; while (!_kbhit()); return 0; 九、 实验结果及分析: 测试修改后的程序,结果正确,如下图所示: 在加密过程中对于每个字符进行(ASCII值+13)&+’A’的计算,可证明加密结果正确。同样解密过程中上式加号变减号,且转换为对应字母的小写字母,可以验证结果正确。程序无误。 十、 实验结论: 移位密码实际上是代换密码的一个特例,其思想比较简单,密钥空间较小,属于单表代换密码,即每个字符对应的加密字符都是固定对应的,实现起来也比较简单,可对字符的ASCII码值进行操作得到加密的结果。 十一、 总结及心得体会: 移位密码中的凯撒密码是我们之前已熟悉的经典古典密码之一,移位密码的思想实在凯撒密码的基础上进行了扩展,但思想仍比较简单,其加密和解密都比较容易实现,通过读程序源码对算法的原理有了更深的理解。