计算机安全基础 上 机 实 验 报 告 学 院 年级 专 业 班 学 生 姓 名 学 生 学 号 实验一 凯撒加密解密 凯撒密码简介:恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3 的时候(解密时的密钥就是3 ): 明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC 使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如: 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ 源代码: #include "kaisa.h" using namespace std; void Kaisa::setI() { cout << "\n 请输入加密密码:"; cin >> i; } void Kaisa::jiami() { char a, b, c; cout << "\n 请输入明文:\t"; cin >> a; b = char('z' - i%26); c = char('Z' - i%26); cout << "\n 密文是:\t"; while(a != '\n') { if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')) { if((a <= b && a >= 'a') || ( a <= c && a >='A')) cout << char(a + i%26); if(a > c && a <= 'Z') cout << char(a + i%26 - 26); if(a > b && a <= 'z') cout << char(a + i%26 - 26); if(a == ' ') cout << " "; } else cout << a; a = cin.get(); } cout << endl; } void Kaisa::setX() { cout << "\n 请输入解密密码:"; cin >> i; } void Kaisa::jiemi() { char a, b, c; cout << "\n 请输入密文:\t"; cin >> a; b = char('a' + i%26); c = char('A' + i%26); cout << "\n 明文是:\t"; while(a != '\n') { if((a <= 'z' && a >= 'a') || ( a <= 'Z' && a >='A')) { if((a <= 'z' && a >= b) || ( a <= 'Z' && a >= c)) cout << char(a - i%26); if(a >= 'a' && a < b) cout << char(a - i%26 + 26); if(a >= 'A' && a < c) cout << char(a - i%26 + 26); if(a == ' ') cout << " "; } else cout <...