python图像加密模块_使用Pycryp的图像加密和解密

这和加密或解密文本是一样的。

示例

首先导入一些模块:from Crypto.Cipher import AES

from Crypto import Random

然后,让我们生成一个键和一个初始化向量。key = Random.new().read(AES.block_size)

iv = Random.new().read(AES.block_size)

加密

下面的代码加载输入文件input.jpg并对其进行加密,然后将加密的数据保存到文件encrypted.enc。在本例中,AES分组密码与CFB操作模式一起使用。input_file = open("input.jpg")

input_data = input_file.read()

input_file.close()

cfb_cipher = AES.new(key, AES.MODE_CFB, iv)

enc_data = cfb_cipher.encrypt(input_data)

enc_file = open("encrypted.enc", "w")

enc_file.write(enc_data)

enc_file.close()

解密

最后,下面的代码加载加密文件encrypted.enc并对其进行解密,然后将解密的数据保存在文件output.jpg中。enc_file2 = open("encrypted.enc")

enc_data2 = enc_file2.read()

enc_file2.close()

cfb_decipher = AES.new(key, AES.MODE_CFB, iv)

plain_data = cfb_decipher.decrypt(enc_data2)

output_file = open("output.jpg", "w")

output_file.write(plain_data)

output_file.close()

注意

为了简单起见,加密和解密是在同一个Python会话中完成的,因此变量key和iv被立即重用,要测试此解决方案,您必须在同一个Python会话中进行加密和解密。当然,如果以后要在单独的会话中解密,则需要保存key和iv,并在需要解密时重新加载它们。

测试解决方案

现在您可以打开output.jpg文件,您将看到与input.jpg中的图像相同的图像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

遇到attemp to invoke virtual method

这个很大原因是没有预先初始化sdk,检查application的配置是否配置了application:name 转载于:https://www.cnblogs.com/caimuqing/p/5894099.html

app启动页自动跳转源码_关于移动端App启动页的策划方案

App启动页是指app在启东时需要加载必要的运行环境和配置,在这个过程中提示用户等待的一个过渡页面。在产品经理眼里启动页是app给予用户重要的第一印象;也是App最重要的黄金页面之一,所有用户100%都会看到的页面。启动页适合用来做以下几个事…

电信运营商占IDC市场65%:中国电信占行业半数以上

随着云计算、大数据的快速发展,作为重要基础设施的IDC数据中心也在高速扩张。 近日,DCA常务理事长何宝宏介绍,我国规划在建数据中心共计246个,总设计机架数约为103万个,总设计服务器规模约1326万台。在用超大型、大型数…

Python 日期和时间戳的转换

Python 日期和时间戳的转换 1. Python中处理时间的模块 Python中处理时间的模块有time、datetime和calendar。 在Python中表示时间的方式: 时间戳:10位整数位和若干小数位,例如 1551153156.6358607元组(struct_time): …

快应用比赛_我的应用如何在国际学生比赛中获得第三名

快应用比赛by Rafael Melo通过拉斐尔梅洛 我的应用如何在国际学生比赛中获得第三名 (How my App won third place in an International Student Competition) I developed an App that won third place at the IEEE Mobile Applications Development Contest 2017 (IEEEmadC 2…

JAVA中String类的intern()方法的作用

一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: public static void main(String[] args) throws Exception { String a "b" ; String b "b" ; …

java 如何排查内存溢出_java 内存溢出排查

测试代码,如下示例:import java.util.ArrayList;import java.util.List;/*** Description 测试内存溢出, 启动时设置参数,最大堆内存为1m, 内存溢出时dump出内存文件 -Xmx1m -XX:HeapDumpOutOfMemoryError* Author luzy* Date 2018/10/5 11:0…

《企业级ios应用开发实战》一2.2 iOS框架介绍

2.2 iOS框架介绍 iOS衍生自Mac OS X的成熟内核,但iOS操作系统更紧凑和高效,支持iPhone和iPod Touch的硬件。iOS继承了Mac OS X的风格,包括:统一的OS X 内核,针对网络的BSD套接字,以及Objective-C和C/C编译器…

python的opencv 车牌识别 开源_毕节进出口车牌识别系统怎么样

毕节进出口车牌识别系统怎么样 gzheu8il毕节进出口车牌识别系统怎么样 系统拓扑图如下:该系统以社区中心机房为枢纽,有机的将智慧家居住户、社区数字化服务、物业数字化管理、社区智能化管理结合起来,真正的实现:住户与住户之间的…

了解使用JavaScript进行面向对象编程的基础(并增强您的编码…

by Kris Baillargeon通过克里斯拜伦 学习使用JavaScript进行面向对象编程的基础知识(并增强您的编码能力!) (Learn the basics of object-oriented programming with JavaScript (and supercharge your coding abilities!)) As a moderator of the freeCodeCamp ch…

postgresql的别名要用双引号才可以

postgresql的别名要用双引号""才可以 转载于:https://www.cnblogs.com/handsome1013/p/10443001.html

imx6 mac地址设置

imx6的mac地址总是固定的值,所以需要更改,采用的方法是在uboot中设置环境变量,之后在kernel中使用uboot中设置的mac地址的值。本文记录更改的过程。 参考链接: http://www.cnblogs.com/zengjfgit/p/5711304.html uboot lib_arm/board.c …

java try catch陷阱_Java异常处理最佳实践及陷阱防范

原标题:Java异常处理最佳实践及陷阱防范出自《深夜里的程序猿》作者:wangzenghuang前言不管在我们的工作还是生活中,总会出现各种“错误”,各种突发的“异常”。无论我们做了多少准备,多少测试,这些异常总会…

vivo手机怎么投屏到电脑_投屏软件电脑加手机投屏软件投屏

优秀的资源工具可以让你事半功倍!本号文内资源已经手工转存整理,安全起见,回复 “领取资源” 按提示自助领取。今天分享的是一家公司出品的投屏神器。为避免被举报这里就不说出软件名了。它可以在局域网内把手机的屏幕投到电脑上,…

How to upload windows Sysprep Files to VMware vCenter Server Appliance 6.5(vC

vCSA5.5中可以登录到端口5480中去上传,vCSA 6.0以后就不支持了。但是可以通过Enable “Pi Shell”来做。 首先确保vCSA的ssh可用: 0. Make sure that SSH in enabled on the VCSA. Home > Administration > System configuration (under Deploymen…

开源短地址_如何在短短5分钟内完成您的第一个开源贡献

开源短地址by Roshan Jossey罗珊乔西(Roshan Jossey) 如何在短短5分钟内完成您的第一个开源贡献 (How to make your first open source contribution in just 5 minutes) The best way to level up your programming skills it to code more. The second best thing is to rea…

【Qt开发】QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent

建了一个对话框,我不想把边框去掉,只想去掉关闭按钮, setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint); 结果那个问号的按钮去掉了,但是关闭按钮还在,求助啊 set…

Vivado Design Suite用户指南之约束的使用第二部分(约束方法论)

Constraints Methodology(约束方法论) 关于约束方法论 设计约束定义了编译流程必须满足的要求,以使设计在板上起作用。 并非所有步骤都使用所有约束在编译流程中。 例如,物理约束仅在实现步骤期间使用(即,由…

eval函数 php_PHP的一句话木马代码和函数eval的简介

大清早的刚从床上爬起来。雨落就跑来找我问我这段代码是什么意思<?php eval($_POST[pp]);?>看了一下&#xff0c;post接收pp的值&#xff0c;抑制错误输出。呵呵开个玩笑&#xff0c;其实不是这么简单&#xff0c;这是一段PHP木马代码&#xff0c;也就是我们所说的后门…

linux安装python_Python - 爱豆

Python下载Python最新源码&#xff0c;二进制文档&#xff0c;新闻资讯等可以在Python的官网查看到&#xff1a;Python官网&#xff1a;你可以在以下链接中下载 Python 的文档&#xff0c;你可以下载 HTML、PDF 和 PostScript 等格式的文档。Python文档下载地址&#xff1a;doc…