在之前的一些文章之中小编给大家介绍了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加密后的图像如何解密”的全部内容了,希望对你有所帮助 。
推荐阅读
- Python字典如何操作查找数据?Python字典查找数据的基本方法
- Python怎么用哈希实现密码加密?Python中密码怎么哈希加密
- Python如何抓取酷狗音乐榜单?怎么使用Python爬取酷狗音乐前500榜单
- Python如何使用scikit库处理图像?Python用skimage模块怎么完成图像处理
- Python怎么对图像进行量化处理?Python中如何实现图像量化
- Python怎么处理json格式数据?Python转换json数据用什么方法
- Python爬虫如何对网页元素进行定位?Python爬虫网页元素定位的方法
- Python有哪些等待元素的方式?python中3种等待元素出现的方法
- python爬虫中xpath插件如何使用?python爬虫lxml库如何解析xpath网页?
- 淘宝客源推广是什么意思?怎么增加客源?