内容正文:
第二单元 算法的程序实现
《算法与程序设计》
加密:是使用某种算法对易懂的信息(明文)进行处理,使其成为不易读懂的一段字符(密文)。
解密:将密文转化为明文的过程。
加密和解密过程中往往会涉及字符处理、数学计算(如Mod操作)以及进制转换等一系列复杂的处理过程。
课时41 加密与解密系列
例1 [2018.11浙江]某种数据加密方法描述如下(加密前后的数值都是0~255的整数):
●以m个数据为一段,将n个待加密数据依次分割成若干个数据段。剩余数据(个数小于m)为一个独立数据段。
●数据段加密规则:
数据个数等于m的数据段,先进行值变换,再进行位置变换,得到加密数据段。
数据个数小于m的数据段,只进行值变换,直接得到加密数据段。
●依次合并加密数据段,即为最后的加密数据。
值变换:用值变换密钥数组x(元素个数为m,值为0~255的整数),将待加密数据段中的数据进行值变换,方法如下:
值变换后第i个元素=(待加密数据段第i个元素+x(i)) Mod 256,其中i=1,2…,m
位置变换:用位置变换密钥数组y(元素个数为m,值为1~m的不重复整数),将上述值变换后的m个元素进行段内位置变换,方法如下:
加密后数据段第y(i)个元素=值变换后第i个元素,其中i=1,2,…,m
例如,n=5,m=3的数据加密过程如下:
(1)已知m=3,数组x与数组y中的数据如下表所示。则待加密数据段“155,1,250”加密后的数据段为________________(填数据,用逗号分隔)。
x(1) x(2) x(3)
10 20 30
y(1) y(2) y(3)
3 1 2
(2)小张根据上述加密算法,设计了一个对应的解密程序,其VB代码如下,请在划线处填入合适的代码(解密与加密使用相同的密钥数据)。
Private Sub Command1_Click()
Const n=100
Const m=6
Dim i As Integer, j As Integer
Dim a(1 To n) As Integer, b(1 To n) As Integer
Dim x(1 To m) As Integer, y(1 To m) As Integer
'读取值变换与位置变换的密钥数据,分别保存在数组x与y中,代码略。
'读取待解密数据,保存在数组a中,