python简单的图片加密「建议收藏」

python简单的图片加密「建议收藏」欢迎加入我们卧虎藏龙的python讨论qq群:729683466●导语●总有些东西是你不希望别人看到的比如你暗恋的女神的照片要是被别人发现了那可就尴尬了所以来学一学用python加密图…

大家好,又见面了,我是你们的朋友全栈君。

欢迎加入我们卧虎藏龙的python讨论qq群:729683466

导 语 ●

总有些东西是你不希望别人看到的

比如

你暗恋的女神的照片

要是被别人发现了

那可就尴尬了

所以

来学一学用python加密图片吧!

代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“加密图片 ”获取源代码

  

效果演示

加密前:

python简单的图片加密「建议收藏」

加密后:

python简单的图片加密「建议收藏」

python简单的图片加密「建议收藏」

往期精选

python凯撒加密图片

 ????

开发工具

python3.6.4,第三方库:PIL

讲解部分

一:凯撒加密

很久以前公众号就发过一篇关于关于python凯撒加密的推文,原理就是凯撒加密,将图片中的每一个像素点按照规律向后移动,这样就可以打破原始的像素点排布规律。就可以让图片变形,如果要解密,就将像素点向前移动。

但根据群里朋友的反映,那个代码加密的效果不太好,也就是说,加密以后的图片还是依稀看的出来轮廓,

下面是以前的加密方法的加密效果:

python简单的图片加密「建议收藏」

加密后还是能够辨认出来,这不像是加密,倒像是在原有的照片上行加了一层帷幕。

如果用这个算法去加密你女神的照片,那可就太丢脸了。

二:字典加密解密原理

然后我自创了一个用于图片的加密方法,还没有想好名字,在这里就叫字典加密吧!python简单的图片加密「建议收藏」python简单的图片加密「建议收藏」python简单的图片加密「建议收藏」

原理就非常简单啦!像素点是0–255之间的整数。如果将像素点用一个映射关系处理一下,就可以让像素点得排列完全混乱,比如说,让图片中像素点12对应51.那么图片中所有的值为12的像素点酒全部是51。如果要解密图片,就将加密后的图片中的像素点全部提取出来,然后将其中的51全部变成12,这样就变成了原来的图片。

其实就是用一个字典对应起来。

三:生成密码本

首先要做的就是这样的一个“密码本”,也就是一个字典,将0–255之间所有的数全部对应0-255中的另外一组数字,也就是data对应code。data相当于字典的key,code相当于字典的value。其中不能有重复的值存在,否则字典密码本就不是一一对应的关系了。

如何生成这样一个密码本。只需要用到下面的随机数生成代码:

import random
import numpy as np
after={}
solve_code={}
data=[]
for i in range(0,256):
    data.append(i)
for i in range(0,256):
    k=random.sample(data, 1)
    solve_code[k[0]]=i
   
    after[i]=k[0]
    data.remove(k[0])


print(solve_code)
np.save("code.npy",after)
np.save("solve_code.npy",solve_code)

用生成随机数的方法,让0-255之间的数随机对应到0-255之间的其他数,然后存储成npy的加密本和解密本。实际上就是字典。然后把这些字典存储起来,就是一直可以用的密码本了!

四:真实图片加密

如何对下面的图片进行加密。

python简单的图片加密「建议收藏」

首先是讲图片读取成矩阵,用到的是python的图片处理库函数,也就是PIL,

from PIL import Image
im = Image.open('./test3.jpeg')
im2 = np.array(im)

用上面的三行代码就可以讲图片转化为numpy格式的矩阵,然后用三层for循环讲矩阵里的数字按照生成的密码加密,用映射关系一一对应。

for i in range(0,size1[0]):
    for j in range(0,size1[1]):
        for k in range(0,size1[2]):


            new_array[i, j, k] =code[im2[i,j,k]]

最后将加密后的矩阵转化为图片,然后存储起来,这样就完成了图片的加密。加密效果如图

python简单的图片加密「建议收藏」

im3=Image.fromarray(np.uint8(new_array))
im3.show()
im3.save('flag.jpg')

完整地加密代码如下。解密代码只需要把密码本换成解密的字典即可。

import numpy as np
from PIL import Image
im = Image.open('./test3.jpeg')
im2 = np.array(im)


size1=im2.shape
print(size1)
code=np.load('code.npy',allow_pickle=True).item()
slove_code=np.load('solve_code.npy',allow_pickle=True).item()
#加密图片
print(code)




new_array=np.zeros(size1)
k1=0
print("进入循环")
for i in range(0,size1[0]):
    for j in range(0,size1[1]):
        for k in range(0,size1[2]):


            new_array[i, j, k] =code[im2[i,j,k]]




#显示图片,保存图片
im3=Image.fromarray(np.uint8(new_array))
im3.show()
im3.save('flag.jpg')


作者|齐

编辑|齐

感谢大家观看

有钱的老板可打赏一下小编哦

扫描二维码

关注我们

QQ群:729683466

◰  

参考来源

图片来源:pexels

百度图片

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151967.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 卸载工具_java卸载工具下载

    java 卸载工具_java卸载工具下载java怎样完全卸载?怎么彻底删除java?有些用户的系统上会自带java程序,或者是因为安装了什么软件导致java一起安装了,那这个时候怎么将java卸载呢?不清楚的用户,看看小米小编为大家推荐的一款非常好用的java卸载工具。软件介绍java卸载器是一款java完全卸载工具,当你的java出现了故障需要卸载重装的话,就可以使用这个软件完全卸载掉java的所有文件,可以完美解决java卸载不了、…

    2022年5月20日
    42
  • sched://task scheduler_Task Scheduler

    sched://task scheduler_Task SchedulerSpringBoot自带的任务调度是如何实现的?@EnableScheduling@Scheduled注解在任务调度的实现中承担了怎样的角色?ScheduledAnnotationBeanPostProcessor是如何工作的?都参与了ApplicationContext生命周期的哪些环节?调度是通过TaskScheduler实现的,默认的TaskScheduler是怎么创建的?我们如何通过SchedulingConfigurer创建自己的TaskScheduler?

    2022年10月11日
    3
  • 两数之和 II – 输入有序数组(Java实现)

    两数之和 II – 输入有序数组(Java实现)给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1和index2,其中index1必须小于index2。

    2022年5月27日
    32
  • 九种跨域方式实现原理

    九种跨域方式实现原理

    2021年11月5日
    49
  • python七夕表白代码(转载)_2019年倒计时日历

    python七夕表白代码(转载)_2019年倒计时日历520即将来袭~普通人表白,发微信买花程序员表白,用代码给女神画玫瑰,画爱心无线弹窗表白,网页无线弹窗表白第一种:心连心fromturtleimport*color(“black”,”red”)pensize(5)begin_fill()penup()goto(50,50)pendown()right(45)goto(100,0)left(90)fd(120)circle(50,225)penup()goto(0,0)pendown()left(13..

    2022年10月14日
    3
  • PHP审计之Duomicms审计

    PHP审计之Duomicms审计前言废话不多说,开冲代码审计任意文件写入定位漏洞代码admin/admin_ping.phpif($action=="set"){$

    2021年12月13日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号