python简单的图片加密

article/2025/9/15 7:56:29

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

导 语 ●

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

比如

你暗恋的女神的照片

要是被别人发现了

那可就尴尬了

所以

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

代码及相关资源获取

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

  

效果演示

加密前:

加密后:

往期精选

python凯撒加密图片

 ????

开发工具

python3.6.4,第三方库:PIL

讲解部分

一:凯撒加密

很久以前公众号就发过一篇关于关于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]]=iafter[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的图片处理库函数,也就是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]]

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

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

百度图片


http://chatgpt.dhexx.cn/article/YN22t0Qk.shtml

相关文章

java 图片加密

首先,了解下异或操作 ^ ,对一个数进行两次异或操作得到原数值。 public class IOTest {public static void main(String[] args) {int i 3;System.out.println(i^123);//120System.out.println(i^123^123);//3}} 将一张图片进行拷贝,对其进…

用JS实现:图片压缩、图片加密

本文将用JavaScript实现两个颇有技术含量的功能:图片压缩、图片加密。 最终效果:可实现将任意图片加密、压缩,并保存到一个独立的html页面中,输入正确的密码,才能看到原图。 第一步、压缩图片 技术原理 将图片读入c…

python图片水印加密的几种处理方式

常见的图片加密方法包括加密算法、水印、隐藏、压缩等。下面简要介绍一些常见的图片加密方法: 加密算法 加密算法是一种基于数学运算的加密方式,可对图片进行加密处理,使得未经过解密操作的情况下难以被直接读取或显示。常见的加密算法包括对…

去除水印-Teorex Inpaint 序列号

Teorex Inpaint 正版序列号 效果很好! 如图所示 序列号在下面; 上面就是 正版的效果; 所以 大家好评 我心领了 记得关注! 好福利一堆呢! 回复“水印” 知识星球也要加入哦! 加粗样式 加入的好朋友…

Inpaint 5.2安装说明

##一.软件简介: Inpaint 是一款可以从图片上去除不必要的物体,让您轻松摆脱照片上的水印、划痕、污渍、标志等瑕疵的实用型软件;简单说来,Inpaint 就是一款强大实用的图片去水印软件,您的图片中不想要的部分…

图片去水印工具:Inpaint 7.2中文专业破解版下载及使用方法

下载地址: 点我 Inpaint 是一款可以从图片上去除不必要的物体,让您轻松摆脱照片上的水印、划痕、污渍、标志等瑕疵的实用型软件;简单说来,Inpaint 就是一款强大实用的图片去水印软件,您的图片中不想要的部分&#xff0…

snipaste使用教程介绍

snipaste是一个简单但强大的截图工具,但是很多用户下载之后都不知道怎么用?今天小编带来的内容就是snipaste使用方法教程。 Win10纯净版_Win10 64位纯净版_Win10纯净精简版系统下载-系统部落 1、打开Snipaste首选,切换到常规,勾…

截图工具Snipaste

提示:今天介绍一个好用的截图工具 Snipaste介绍 软件名/版本: Snipaste-2.7.3-Beta-x64 Snipaste介绍:这里只谈一下我的使用感受吧,Snipaste有我们常用的截图样式,它有个好用的粘贴方式就是随意粘贴不影响你其它的操…

SQL SERVER Sequence Number 序列号

SequenceNumber是SQL Server2012推出的一个 新特性。这个特性允许数据库级别的序列号在多表或 多列之间共享。对于某些场景会非常有用,比如,你 需要在多个表之间公用一个流水号。以往的做法是额 外建立一个表,然后存储流水号。而新插入的流水…

Snipaste介绍、安装、使用技巧(截图贴图工具)

一、简介 Snipaste 是一个简单但强大的截图贴图工具,也可以让你将截图贴回到屏幕上!下载并打开 Snipaste,按下 F1 来开始截图,再按 F3,截图就在桌面置顶显示了。就这么简单! 你还可以将剪贴板里的文字…

iMindMap汉化免费下载序列号

iMindMap 是思维导图创始人托尼巴赞(Tony Buzan)开发的思维导图软件,线条自由,具有手绘功能。它结合独特的自由形态头脑风暴视图模式和系统的思维导图视图模式,特别适用于头脑风暴、策划和管理项目、创建演示文稿等。思…

【综合】简单加解密——寻找序列号

【综合】简单加解密——寻找序列号 下面文字对你可能有用(复制粘贴): #include <stdlib.h> #include <string.h> #include “malloc.h” #define MaxPass 66 // 最多66段密文 #define NumbPwdTable 5 // 密码表的份数 #define SizePwdTable 0x210 // 每份密码表占…

Inpaint破解版 - 图片去水印神器

Inpaint是一款强大实用的图片去水印软件&#xff0c;您的图片中不想要的部分&#xff0c;如额外的线&#xff0c;人物&#xff0c;文字等……选定后补绘都会帮你全自动进行擦除&#xff0c;同时补绘会根据附近图片区域重建擦除的区域&#xff0c;使看起来完美无暇&#xff0c;没…

截图软件 : Snipaste

说到截图软件&#xff0c;用过win10、win11的同学第一个想到的应当是PrtSc键或WinShiftS启动系统自带的截图软件&#xff0c;再“老”一点的可能会想到QQ截图。小编在之前也是怎么想的&#xff0c;因此看到其他小编写关于截图软件的文章就很不屑&#xff0c;认为这是多此一举。…

Source Insight 4.0 序列号 license文件

安装程序下载 在官网上下载Source Insight 4.0的安装程序. 版本4.00.0098可用 已经分享到网盘 链接: https://pan.baidu.com/s/1xyprwNSXLpj7kpDa7LaF_Q 提取码: v3cy 版本4.00.0124可用 https://pan.baidu.com/s/1paa_48tv1c0AHhBapqo2TA?pwdxnsx 提取码: xnsx 30天的…

CorelDRAW2021序列号 专业的矢量图像设计软件

CorelDRAW是一款专业的图像设计软件&#xff0c;提供一站式的图片修改功能&#xff0c;附带功能强劲的点阵图向矢量图转化的工具&#xff0c;使用方便简单&#xff0c;是设计师们的必不可少的软件。详见文章内容。 CDR2021新功能&#xff1a; 1、颠覆性协作工具 CorelDRAW …

Android Doze模式分析

Android 6.0 Doze模式分析 Doze模式是Android6.0上新出的一种模式,是一种全新的、低能耗的状态,在后台只有部分任务允许运行,其他都被强制停止。当用户一段时间没有使用手机的时候,Doze模式通过延缓app后台的CPU和网络活动减少电量的消耗。PowerManagerService中也有Doze模…

Android的Doze模式

也是偶然之间听到这个词的 Doze模式 Doze模式 Doze 翻译为打盹, 那么Android的Doze模式呢 , 就是让手机进入了类似打盹的一个状态 , 在这个半梦半醒的状态下 , 手机的后台、服务、广播等都会发生相应的延迟。 Doze模式在Android M&#xff08;6.0&#xff09;时引入&#xff0c…

Android---Alarm定时任务 Doze模式

Android的定时任务有两种&#xff0c;一种是JavaAPI提供的Timer类&#xff0c;另一种就是使用Android的Alarm机制。 Timer不太适合那些需要长期在后台运行的定时任务&#xff0c;因为每个手机都有自己的休眠策略&#xff0c;Android手机长时间不操作就会导致Timer定时任务无法…