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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 编译成功了,运行为什么会失败_如何编译内核

    编译成功了,运行为什么会失败_如何编译内核1:首先在内核文件夹当中选择编译配置文件arch/arm/configs下选则davinci_dm368_ipnc_defconfig_nand(nandflash启动),davinci_dm368_ipnc_defconfig_nfs(nfs文件系统启动)2:makemenuconfig保存退出3:makeARCH=armCROSS_COMPILE=arm_v5t_le-

    2022年8月13日
    1
  • 服务器加网站防盗链,网站防盗链的设置方法介绍(适用于IIS和Apache)[通俗易懂]

    服务器加网站防盗链,网站防盗链的设置方法介绍(适用于IIS和Apache)[通俗易懂]这篇文章主要为大家详细介绍了网站防盗链的设置方法介绍(适用于IIS和Apache),具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。做网站的朋友一般都会遇到这样的一种情况,就是别人的网站经常会调用我们自己网站的图片或者文件,这无形之中会增加我们的服务器的压力,尤其是对于一些服务器带宽并不是十分富裕的网站来说就更是雪上加霜。因此我们需要学会设置防盗链来应对或者说来…

    2022年7月23日
    22
  • linux下的文件io编程实现文件的拷贝[通俗易懂]

    linux下的文件io编程实现文件的拷贝[通俗易懂]/*copy_file.c*/#include#include#include#include#include#include#define BUFFER_SIZE 1024 /*每次读写缓存大小,影响运行效率*/#defineSRC_FILE_NAME “src_file” /*源文件名*/#defineDEST_FILE_NAME “dest_

    2022年5月4日
    63
  • Swift编程语言的相关资料

    Swift编程语言的相关资料

    2021年11月29日
    38
  • RFC2616-HTTP1.1-Methods(方法规定部分—译文)

    partof HypertextTransferProtocol–HTTP/1.1RFC2616Fielding,etal.9方法定义下面列出了有关HTTP/1.1

    2022年3月25日
    36
  • 子网划分详解与子网划分实例精析

    子网划分详解与子网划分实例精析目录子网划分理论基础为什么进行子网划分明确需求知识点子网划分常见问题子网划分实例精析C类子网划分实例分析已知网络地址和子网掩码,求子网划分结果已知IP地址和子网掩码求子网划分B类地址子网划分实例已知网络地址和子网掩码求子网划分已知ip地址和子网掩码求子网划分A类子网划分实例已知网络地址和子网掩码求子网划分已知ip地址和子网掩码求子网划分小结…

    2022年6月27日
    31

发表回复

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

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