如何用代码实现“隐写术”

如何用代码实现“隐写术”

首页冒险解谜代号解谜更新时间:2024-05-03

00、背景

这是今年中国互联网上很受欢迎的照片。

这张照片的背景是“突然下起了暴雨,没有带雨伞的人躲在一起”。

这个照片为什么火,因为仅仅通过照片,就可以让我们感受到,当时的情景是多么的和谐有趣,传递了开心幸福的感觉。

不同职业、不同年龄的人,都像孩子一样,躲在唯一的保护伞下。

他们每个人都是平凡的,但又都是独一无二的。

我在第二张照片,写入了"hello dhub",你能看出两者的区别吗?

稳稳的幸福

01、隐写术

隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganographia,该书书名源于希腊语,意为“隐秘书写”。

在物理世界中,我们可以用特殊的隐形药水来实现“隐写术”,历史上还有用后脑勺传递秘密的信息的。

那么,在数字世界中,我们又是如何实现隐写术的呢?

02、代码实现——加解密1、导入包

from PIL import Image import stepic2、加密

im = Image.open('china.png') # 将一些文本编码到图像文件中,然后将其保存到另一个文件中 secret_msg = "hello dhub" secret_msg = secret_msg.encode() im1 = stepic.encode(im, secret_msg) im1.save('china-encode.png','png')3、解密

encryptd_image = Image.open("china-encode.png") decryptedmessage = stepic.decode(encryptd_image) print(decryptedmessage)

输出解密字符串

03、基本原理

1、我们知道图片由像素构成,而每个像素由RGB构成,R,G,B 都有256种状态。一般用1个十六进制或者,三个十进制来表示。

2、具体实现中是使用了LSB 技术(Least Significant Bit),就是先把文字信息转换成二进制信息,然后将二进制信息写入到每一个RGB的最低位上。

3、把被加密字符串的二进制信息,按顺序放到RGB的最后一位就可以了。

,
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved