基于Python对图片添加个人信息的数字签名,非水印

基于Python对图片添加个人信息,数字签名

一、前言

该计划源于我对网络喷子的不满,网络不是净土,现在很多的网民自认为隔着屏幕可以为所欲为。我针对两件事情做如下工作:第一,很多网友去盗图然后去编故事,导致同样一张图被上传不至很多次,都说图片是知识产权,但是网友不以为然,而且某些平台为了所谓的流量置之不理;第二,某些人在网络中潜水,散步虚假信息和图片,对于这种行为要严厉打击。因此我的想法是,第一利用信息摘要MD5技术,避免图片重复上传,第二利用图片的Exif信息,给图片上传者加上时间戳和个人信息加密以及平台烙印。我们都知道很多平台给图片加上了水印,但是呢影响视觉体验。

二、代码

我用的是Jupyter

# 查看MD5值
import hashlib
from PIL import Image
import piexif
import time
import base64
# 得到图片的MD5信息
def getPictureMD5(filePath):
    with open(filePath, 'rb') as f:
        md5 = hashlib.md5(f.read()).hexdigest()
    return md5
# 我们将png图片转换为jpg文件 为我们提供 素材
im = Image.open("./logo.png")
im = im.convert('RGB')
im.save("./logo.jpg")
# 读取 该jpg文件的 exif 信息
exif_dict = piexif.load('./logo.jpg')
print(exif_dict)# 我们发现Exif信息都是空的 现在我们要填充它们
# {'0th': {}, 'Exif': {}, 'GPS': {}, 'Interop': {}, '1st': {}, 'thumbnail': None}
# 填充信息 未加密
exif_dict["0th"][piexif.ImageIFD.Artist] = "江湖人称王某人的程序员".encode()#修改作者信息
exif_dict["Exif"][piexif.ExifIFD.DateTimeOriginal] = u"2021:06:19 10:10:10".encode()#修改拍摄时间 时间格式不能错
exif_dict["0th"][piexif.ImageIFD.Software] = "CSDN".encode()#修改版权
exif_bytes = piexif.dump(exif_dict)# 转换成字节
im = Image.open("./logo.jpg")
im.save("未加密_logo.jpg", exif=exif_bytes)#保存成新图片,加上exif信息
# 填充信息 加密 这里我们简单的以base64加密为例子,对作者信息进行加密,当然实际上应该采用更高级的手段
exif_dict["0th"][piexif.ImageIFD.Artist] = base64.b64encode("江湖人称王某人的程序员".encode('utf-8'))#修改作者信息
exif_dict["Exif"][piexif.ExifIFD.DateTimeOriginal] = u"2021:06:19 10:10:10".encode()#修改拍摄时间 时间格式不能错
exif_dict["0th"][piexif.ImageIFD.Software] = "CSDN".encode()#修改版权
exif_bytes = piexif.dump(exif_dict)# 转换成字节
im = Image.open("./logo.jpg")
im.save("加密_logo.jpg", exif=exif_bytes)#保存成新图片,加上exif信息
#接下来我们解密图片信息
exif_dict = piexif.load('./加密_logo.jpg')
author=exif_dict["0th"].get(piexif.ImageIFD.Artist,"")
print(base64.b64decode(author).decode())

在这里插入图片描述

# 查看MD5
getPictureMD5("./logo.jpg")

我们发现只要文件被修改,MD5就会改变,MD5是文件的唯一标识
在这里插入图片描述

三、结果

在这里插入图片描述

四、总结

我曾经考虑过直接对图片内容进行修改,比如对于某个固定位置上的像素点加上1,视觉上差异不大,但是实际上隐含着我加入的信息,但是难度很大。接着考虑修改Exif信息,但是该信息可以被修改,接着是对图片加水印,除非对水印进行涂抹,否则不会被更改,但是水印影响美观,接着想到了差分隐私,但是我对该领域不熟。回归本质,实际上我只想在图片不被修改的情况下可以溯源,而又不想泄露发布者的隐私,因此采用改方法,可以屏蔽一大部分人,根据时间戳我们可以得到传播链。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖人称王某人的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值