图片隐写之LSB(Least Significant Bit)原理及其代码实现

article/2025/11/7 0:24:23

1. 什么是隐写?

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

2. 什么是图片隐写?

图片隐写术这项技术可以将秘密信息嵌入到图片媒介中而不损坏它的载体的质量。第三方既觉察不到秘密信息的存在,也不知道存在秘密信息。因此密钥、数字签名和私密信息都可以在开放的环境(如Internet或者内联网)中安全的传送。简单概括就是信息明明就在眼前,但是你却视而不见

3. LSB隐写的原理

在png图片的存储中,每个颜色表示需要有8bit,即有256种颜色,一共包含256的三次方个颜色,即16777216中颜色,人类的眼睛可以区分约1,000万种不同的颜色,剩下无法区分的颜色就有6777216。
在这里插入图片描述
那么什么是LSB呢,每个像素点的颜色可以用十进制0~255的数值表示,那么上图中的RGB(218,150,149)表示成二进制为:
在这里插入图片描述
LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化,我们仅对RGB中的最低位进行修改,如当前像素位点最后一位修改成1,1,0.则上述RGB变成218->219:
在这里插入图片描述
上述变化很难用肉眼察觉到,而且每一个像素位点携带了一位信息,那么我们可以利用八个字节的最低位存储一个比特信息,而该比特信息则可以转化为ASCII字符,从而达到隐写信息的目的。

4. 如何实现LSB隐写?

import numpy as np
import PIL.Image as Image# 读取图片的像素信息
picture = Image.open('./pic/pic.jpg')
pic_data = np.array(picture)# 读取要隐写的文件,长度为4893
with open('./pic/secret.py', encoding="utf-8") as file:secrets = file.read()# 将图片拷贝一份,作为最终的图片数据
im_data = np.array(picture.copy()).ravel().tolist()def cover_lsb(bin_index, data):''':param bin_index:  当前字符的ascii的二进制:param data: 取出数组像素的八个数值:return: LSB隐写后的字符'''res = []for i in range(8):data_i_bin = bin(data[i])[2:].zfill(8)if bin_index[i] == '0':data_i_bin = data_i_bin[0:7] + '0'elif bin_index[i] == '1':data_i_bin = data_i_bin[0:7] + '1'res.append(int(data_i_bin, 2))return respic_idx = 0
# 采用LSB隐写技术,横向取数据,每次取9个数据,改变8个像素最低位
res_data = []
for i in range(len(secrets)):# 拿到隐写文件的字符ascii数值, 并转换为二进制,填充成八位index = ord(secrets[i])bin_index = bin(index)[2:].zfill(8)# 对数据进行LSB隐写,替换操作res = cover_lsb(bin_index, im_data[pic_idx * 8: (pic_idx + 1) * 8])pic_idx += 1res_data += res
# 对剩余未填充的数据进行补充填充,防止图像无法恢复
res_data += im_data[pic_idx * 8:]# 将新生成的文件进行格式转换并保存,此处一定保存为压缩的png文件
new_im_data = np.array(res_data).astype(np.uint8).reshape((pic_data.shape))
res_im = Image.fromarray(new_im_data)
res_im.save('./pic/res_encode.png')

5. 如何实现隐写数据还原?

import numpy as np
import PIL.Image as Image# 打开隐写文件
picture = Image.open('./pic/res_encode.png')
pic_datas = np.array(picture).ravel().tolist()# 字符的长度为4893
with open('./pic/secret.py', encoding="utf-8") as file:secrets = file.read()str_len = len(secrets)
print('字符的长度为:', str_len)# 将图片拷贝一份,作为最终的图片数据
im_data = np.array(picture.copy()).ravel().tolist()def lsb_decode(data):''':param bin_index:  当前字符的ascii的二进制:param data: 取出数组像素的八个数值:return: LSB隐写后的字符'''str = ''for i in range(len(data)):print(bin(data[i])[2:])data_i_bin = bin(data[i])[2:][-1]str += data_i_binreturn strpic_idx = 0
# 采用LSB隐写技术,横向取数据,每次取9个数据,改变8个像素最低位
res_data = []for i in range(len(secrets)):# 拿到第i个数据,转换成二进制data = im_data[i * 8: (i + 1) * 8]data_int = lsb_decode(data)# 找到最低位res_data.append(int(data_int, 2))# 将二进制数据转换成ASCII
str_data = ''
for i in res_data:temp = chr(i)str_data += temp
print(str_data)

6. 总结

基本的LSB原理很简单,最容易实现,但是鲁棒性不佳,后续更好的隐藏信息,则会通过数字水印技术实现,后面文章再进行更新。


http://chatgpt.dhexx.cn/article/3ZXhEIKA.shtml

相关文章

MetaPhlAn2:宏基因组物种组成分析

简介 MetaPhlAn2是分析微生物群落(细菌、古菌、真核生物和病毒)组成的工具,它在宏基因组研究中非常有用,只需一条完命令即可获得微生物的物种丰度信息(扩增子物种组成需要质控、拼接、拆样本、切除引物、比对等步骤,此软件居然分析宏基因组这…

你想要的宏基因组-微生物组知识全在这(2023.4)

欢迎点击上方蓝色”宏基因组”关注我们! 宏基因组/微生物组是当今世界科研最热门的研究领域之一,为加强宏基因组学技术和成果交流传播,推动全球华人微生物组领域发展,中科院青年科研人员创立“宏基因组”公众号,联合海…

Kraken2:宏基因组快速物种注释神器

简介 kraken是基于k-mer精确比对,并采用最LCA投票结果快速宏基因组DNA序列进行物种注释的软件。 图. Kraken2分类基本原理 该文章于2014年发表于Genome Biology,目前引用过两千次[1]。详见《Kraken:使用精确比对的超快速宏基因组序列分类软件…

Nature综述: 宏基因组关联分析-深入研究微生物组

本文由谢忠杰编译,董小橙、江舜尧编辑,本文较长,建议用电脑阅读。 “微生太”原创微文,转载已获授权。 导读 问题1:哪些疾病与人体微生物明确相关? 问题2:如何研究人体微生物与健康的关系&#…

Nature子刊:HUMAnN2实现宏基因组和宏转录组种水平功能组成分析

HUMAnN2实现宏基因组和宏转录组种水平功能组成分析 Species-level functional profiling of metagenomes and metatranscriptomes Nature Methods, [IF 26.919], Article, 2018-10-30 DOI: http://dx.doi.org/10.1038/s41592-018-0176-y 第一作者:Eric A. Franzosa…

从测序到宏基因组:聚焦菌群生信分析方法最前沿

今天是第2439期日报。 Nature子刊:基于三代测序的宏基因组分析助力完整微生物进化研究 Nature Methods[IF:47.99] ① 基于Pacific Biosciences或Oxford Nanopore的三代测序技术已成为获得闭环微生物基因组的常规手段,即使对特殊大量数据的读取&#xff0…

Protein Cell:扩增子和宏基因组数据分析实用指南

扩增子和宏基因组数据分析实用指南 A practical guide to amplicon and metagenomic analysis of microbiome data Protein Cell [IF: 10.164] DOI: https://doi.org/10.1007/s13238-020-00724-8 Review: 2020-5-11 第一作者:刘永鑫1,2,3, 秦媛1,2,3,4, 陈同5 通讯作…

凌恩生物文献分享|颠覆性的宏基因组新思路,速来get!

非人灵长类动物(NHP)是人类的近亲,为宿主-微生物互作的研究提供了一个很好的例子。近年来研究主要集中在野生灵长类动物的肠道微生物群,这将有助于了解灵长类及其肠道微生物群的进化,但仍然缺乏关于野生种群肠道微生物…

Nature综述:宏基因组测序研究耐药基因的方法和资源

本文转自红皇后学术,链接 https://mp.weixin.qq.com/s/2QMrq6hwr4mIPSpe_rfXJg 论文信息 论文题目:Sequencing-based methods and resources to study antimicrobial resistance 期刊:Nature Reviews Genetics IF:35.898 发表时间…

Nature综述:鸟枪法宏基因组-从取样到数据分析——2万字带你系统入门宏基因组实验和分析

文章目录 NBT:鸟枪法宏基因组-从取样到数据分析热心肠日报摘要正文图1. 宏基因组分析流程概述附图1. 用于规划宏基因组学研究的示例工作流程附框1. 实验设计中的问题和解决方案鸟枪法宏基因组学研究方案设计样本采集和DNA提取表1. 在测序之前富集微生物细胞和DNA方法…

宏基因组TPM定量

在RNA-Seq分析中,为了获取基因表达量差异,于是产生了RPKM、FPKM、TPM定量方法,去除测序深度和基因长度的影响。RPKM用于单端测序;FPKM用于双端测序。而TPM计算方法类似于RPKM,但更具有优势,是目前使用的较多…

你想要的宏基因组-微生物组知识全在这(2023.01)

欢迎点击上方蓝色”宏基因组”关注我们! 宏基因组/微生物组是当今世界科研最热门的研究领域之一,为加强宏基因组学技术和成果交流传播,推动全球华人微生物组领域发展,中科院青年科研人员创立“宏基因组”公众号,联合海…

你想要的宏基因组-微生物组知识全在这(2022.10)

欢迎点击上方蓝色”宏基因组”关注我们! 宏基因组/微生物组是当今世界科研最热门的研究领域之一,为加强宏基因组学技术和成果交流传播,推动全球华人微生物组领域发展,中科院青年科研人员创立“宏基因组”公众号,联合海…

你想要的宏基因组-微生物组知识全在这(2022.12)

欢迎点击上方蓝色”宏基因组”关注我们! 宏基因组/微生物组是当今世界科研最热门的研究领域之一,为加强宏基因组学技术和成果交流传播,推动全球华人微生物组领域发展,中科院青年科研人员创立“宏基因组”公众号,联合海…

Nature子刊:宏基因组中挖掘原核基因组的分析流程

宏基因组中挖掘原核基因组的分析流程 从宿主相关的短读长鸟枪宏基因组测序数据中恢复原核基因组 Recovering prokaryotic genomes from host-associated, short-read shotgun metagenomic sequencing data Nature Protocols [IF:10.419] 2021-04-16 Articles DOI: https://doi…

宏基因组测序实验分析方法

宏基因组测序实验分析方法-功能分析基于reads 1 使用ctab法或相应试剂盒提取样本中的总 DNA; 2 DNA样品检测合格后,使用Covaris超声波破碎仪随机打断,再经末端修复、加A尾、加测序接头、纯化、PCR扩增等步骤完成整个文库制备工作&#xff1…

宏基因组测序流程(不完全版)

文章目录 所做工作收获宏基因组分析流程Step1.去除宿主污染Step2.去除接头序列Step3.对序列进行进一步质控Step4.对read进行进一步拼接(contig)Step5.对contig进行orf预测Step6.查找orf区翻译出来的氨基酸序列对应的蛋白质家族 所做工作 Step1.去除宿主污染 Step2.去除接头序…

一文读懂宏基因组分析套路

很多亲人感觉宏基因组的分析结果内容种类太多,根本学不过来。其实本质上并不复杂,只分为两类:物种组成和功能组成两大类,这是核心结果;再加上开头系统描述和结尾的讨论比较。通常会出现固定套路的4部分结构。 今天就从…

宏基因组测序

微基生物提供宏基因组测序分析服务。 宏基因组是指特定环境中全部微生物遗传物质的总和。宏基因组测序以特定环境中的整个微生物群落作为研究的对象,不需对微生物进行分离培养,而是提取环境微生物总DNA进行研究。其摆脱了传统研究中微生物分离培养的技术…

微生物菌群宏基因组研究技术分享

近年的研究热点集中于环境和生物体相互作用的微生物群体,而大量复杂的微生物群体存在培养困难,构成复杂(包括细菌、古菌、真菌、原生生物、病毒甚至小型真核生物)。因此如何用高通量精准的了解这些群体的构成,基因功能…