Python怎么对图像加密?Python加密后的图像如何解密

在之前的一些文章之中小编给大家介绍了python中对密码进行加密的方法,而这个方法实际上是对文本进行的操作 。虽然不可逆,但是它还是有着原文本在的 。而文本可以进行加密,那么图像也是可以去加密的 。下面会介绍python加密和解密图像的方法,一起往下看看吧 。

Python怎么对图像加密?Python加密后的图像如何解密

文章插图
一、python图像加密
这个python图像加密方法需要遵守三个条件,那就是可逆、安全、大小不变 。而在这些条件下就可以使用Arnold算法了,又被称之为猫脸置乱 。这个加密算法是通过一个求余数的公式,来对图像上某些位置的坐标进行拉伸和变换,但是图像的整体大小不会变 。
因为是套用了算法公式的原因,使用它在加密完成是可以解密成原图的 。加密算法实现主要得用到图像、变换次数、坐标以及长宽了,代码如下所示:
def arnold_encode(image, shuffle_times, a, b):    arnold_image = np.zeros(shape=image.shape)    h, w = image.shape[0], image.shape[1]    N = h    for time in range(shuffle_times):        for ori_x in range(h):            for ori_y in range(w):                new_x = (1*ori_x + b*ori_y)% N                new_y = (a*ori_x + (a*b+1)*ori_y) % N                arnold_image[new_x, new_y, :] = image[ori_x, ori_y, :]      return arnold_image二、pyton图像解密
那么图像解密就更加简单了,只需要重新的套用一下公式并且将置乱后的图像传进去即可实现 。虽然这个图像是可以解密的,但是解密的关键点在于它传进来参数是否是这个图像加密之前的参数 。所以不需要担心加密后的图像可以被任意的解密算法给破解掉,代码如下所示:
def arnold_decode(image, shuffle_times, a, b):    decode_image = np.zeros(shape=image.shape)    h, w = image.shape[0], image.shape[1]    N = h    for time in range(shuffle_times):        for ori_x in range(h):            for ori_y in range(w):                new_x = ((a*b+1)*ori_x + (-b)* ori_y)% N                new_y = ((-a)*ori_x + ori_y) % N                decode_image[new_x, new_y, :] = image[ori_x, ori_y, :]      return decode_image【Python怎么对图像加密?Python加密后的图像如何解密】以上就是关于“Python怎么对图像加密?Python加密后的图像如何解密”的全部内容了,希望对你有所帮助 。

    推荐阅读