置换加密是一种常用的图像加密方法,其思想是通过移动像素隐藏图中信息,例如,将坐标为 (1,2) 的像素放到 (8,9) 处,将 (8,9) 处的像素放到 (20,111) 处,等等。根据像素移动方法的不同,可以得到不同的置换加密算法,下面给出 Arnold 置换加密方法。
将原始图像记为图像 1,加密后的图像记为图像 2,图像 1 和图像 2 分辨率相同,且均为 N×N(正方形)。设 (x1,y1) 是某像素在图像 1 中的坐标,(x2,y2) 是该像素加密后在图像 2 中的坐标,也就是在加密过程中,图像1 (x1,y1) 处的像素会被放到图像2 的 (x2,y2) 处,有:
x2=(x1+b∗y1)%N
y2=(a∗x1+(a∗b+1)∗y1)%N
其中,% 表示求余运算,a 和 b 是此加密方法的密钥,在本关,a 取 1、b 取 2。
本关任务是实现函数enImg(path1, path2)
函数,其功能是利用 Arnold 置换方法对图像 1 进行加密,并将加密结果保存为图像 2, 图像 1 和图像 2 的路径分别为path1
和path2
。
相关知识
参照之前关卡的程序。
利用上面的公式将图像 1 中所有像素均移动 1 次,称为一次置换。一次置换并不能达到很好的加密效果,解决方法是进行 n 次置换,下图给出了 n 取不同值时的加密效果。过关后,可以尝试进行多次置换,观察加密效果。