实验目的与要求
1. 帮助学生掌握置换密码的加密解密过程,能够利用所学过的编程语言,实现加解密算法。使学生掌握编程实现实际问题中的方法,提高专业技能和专业素养。
2. 要求学生掌握算法的程序实现的方法,能应用密码算法的特点,设计合适的交互界面,并能正确实现应用编程。
实验原理与内容
置换密码加密解密过程
设明文为:4D 61 65 53 2D 4F 69 20 4E。密钥为10,8,1,6,3,0,11,5,7,17,4,12,13,14,9,15,2,16。求加密后的16进制密文。
解 先思考和描述算法,也就是对明文4D 61 65 53 2D 4F 69 20 4E实现置换10,8,1,6,3,0,11,5,7,17,4,12,13,14,9,15,2,16。通过对数组赋值实现:
m(i)={4D 61 65 53 2D 4F 69 20 4E},i=1,2,3,…,9。
k(i)={ 10,8,1,6,3,0,11,5,7,17,4,12,13,14,9,15,2,16},i=0,1,2,3,…,17。
c(i)=m(k(i)), i=0,1,2,3,…,17。
c(0),c(1),…,c(17)为密文。
密文序列为: 。
这样可以推广到任意置换。有这个思维才可以编程实现,因此,思想方法更重要。
幻方密码加密解密过程(即置换密码的解密)
……
实验内容及拓展
实验原理已包含实验内容,下面所说的只是拓展实验内容实现的难点:
1. 设计交互图形界面;
2. 字符的转换
3. 文件的读取。
实验步骤
实现置换密码加解密过程
实验注意事项
遇到问题可以通过互联网查询方法或者插入断点进行调试
实验设备与软件环境
PC Windows环境
实验过程与结果
1.1原理解析
置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码也叫换位密码。
试编程实现矩阵换位密码。它的加密方法是将明文中的字母按照给定的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中的字母,形成密文。例如,明文为attack begins at five,密钥为acbdfe
1.2加密过程
将明文按照每行6个字母的形式排在矩阵中,如下形式:
['a', 't', 't', 'a', 'c', 'k']
['b', 'e', 'g', 'i', 'n', 's']
['a', 't', 'f', 'i', 'v', 'e']
根据密钥acbdfe可用得到各字母在字母表中的先后出现顺序132465
根据上面的置换,将原有矩阵中的字母按照第132465的顺序排列,则有下列形式:
['a', 't', 't', 'a', 'k', 'c']
['b', 'g', 'e', 'i', 's', 'n']
['a', 'f', 't', 'i', 'e', 'v']
1.3解密过程
将密文按照每行6个字母的形式排在矩阵中,如下形式:
['a', 't', 't', 'a', 'k', 'c']
['b', 'g', 'e', 'i', 's', 'n']
['a', 'f', 't', 'i', 'e', 'v']
根据密钥acbdfe可用得到各字母在字母表中的先后出现顺序132465
根据上面的置换,将原有矩阵中的字母还原,则有下列形式:
['a', 't', 't', 'a', 'c', 'k']
['b', 'e', 'g', 'i', 'n', 's']
['a', 't', 'f', 'i', 'v', 'e']
2.1代码解析
处理密钥获取密钥的长度及顺序
加密
解密
主函数