热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

(5.3)【苹果系统中数据隐藏】lnvisiletter使用方法、隐藏原理分析

目录一、简介:二、使用方法:第一步:选择模式第二步:选择图像三、数据隐藏方法分析InvisiLetter隐藏方法

目录

一、简介:

二、使用方法:

第一步:选择模式

第二步:选择图像

三、数据隐藏方法分析

InvisiLetter隐藏方法

两个显著差异:

差异:

总结:




一、简介:

用法和其他应用类似但稍显复杂。打开Invis止etter即可进行数据嵌入或从图像中提取隐藏图像(6.27)


二、使用方法:

第一步:选择模式

我们选择“EmbeddingSecret Image"开始数据隐藏操作。选择此选项后(6.28),系统会弹出界面,提示我们选择一个载体图像(6.29)


第二步:选择图像

直接拍一张照片、从相册中选择一张作为载体图像(6.29)

选好载体图像后,就可以用手指或者笔以手写的方式直接输人要嵌入到图像中的消息 (6.30、6.31,手写消息将以图像的形式嵌入载体图像)。

为了充分展示 InvisiLetter的数据隐藏方法,分别输入两条消息,一条简单的,一条复杂的。







三、数据隐藏方法分析

InvisiLetter隐藏方法

嵌入手写消息后, 最终生成的图像是PNG格式的。

对比分析下嵌入两条不同消息的图像。 嵌入的两条不同手写图像后的图像对比效果(6.32), 左图嵌入的是简单的, 右图嵌入的是复杂的



两个显著差异:

(1)大小:嵌入简单图像的较小, 为6744 字节。  因为为了记录额外的字和手写图像元素, 需要嵌入一些额外消息。 PNG图像的IDAT块是压缩过的, 但是, 压缩前对真彩RGB值的任何更改都会导致压缩效果的改变。


(2)颜色:更显著的差异是嵌入复杂图像那张使用了更多的颜色:55 833个, 而嵌入简单图像那张用了47 606个。 在使用相同载体图像的情况下, 颜色个数上的增加表明数据嵌入是修改了最低有效位值, 因为这种方法会在非压缩复杂图像中增加新的颜色。


差异:

普通渲染, 两张图像看起来完全一样, 无法立即察觉到任何被扭曲或伪造的痕迹。

将两张图像放大4倍后, 会看到锯齿状的边缘, 但是原始载体图像放大后也是这样的, 但是原始载体图像, 不管是简单的还是复杂的, 放大后都是这样的。


为了分析插入简单图像和复杂图像的两张图像的差异, 并发现因嵌入数据引起的改变。
我们必须用另一种方式来渲染图像, 比如渲染每张图像的色调(6.33)



总结:

差别就很明显了。 嵌入的数据越多, 图像的色调就越低。 这表明数据是直接嵌入到图像的RGB值中的。 再检查下图像的结构, 可以发现没有任何结构元素被修改, 因此, 可以确定数据是直接嵌入到真彩图像的RGB值中的。



推荐阅读
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 优雅地记录API调用时长
    本文旨在探讨如何高效且优雅地记录API接口的调用时长,通过实际案例和代码示例,帮助开发者理解并实施这一技术,提高系统的可观测性和调试效率。 ... [详细]
  • 深入解析mt_allocator内存分配器(二):多线程与单线程场景下的实现
    本文详细介绍了mt_allocator内存分配器在多线程和单线程环境下的实现机制。该分配器以2的幂次方字节为单位分配内存,支持灵活的配置和高效的性能。文章分为内存池特性描述、内存池实现、单线程内存池实现、内存池策略类实现及多线程内存池实现等部分,深入探讨了内存池的初始化、内存分配与回收的具体实现。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文详细解析 Skynet 的启动流程,包括配置文件的读取、环境变量的设置、主要线程的启动(如 timer、socket、monitor 和 worker 线程),以及消息队列的实现机制。 ... [详细]
  • 本文详细记录了一位Java程序员在Lazada的面试经历,涵盖同步机制、JVM调优、Redis应用、线程池配置、Spring框架特性等多个技术点,以及高级面试中的设计问题和解决方案。 ... [详细]
  • RabbitMQ 核心组件解析
    本文详细介绍了RabbitMQ的核心概念,包括其基本原理、应用场景及关键组件,如消息、生产者、消费者、信道、交换机、路由键和虚拟主机等。 ... [详细]
  • 本文探讨了在Go语言中处理切片并发修改时如何有效避免竞争条件的方法。 ... [详细]
  • 深度解析:用友云Pontus限流服务提升系统稳定性
    本文深入探讨了用友云Pontus限流服务的技术细节及其在提高系统稳定性方面的作用,特别是在面对突发流量时的保护机制。 ... [详细]
  • 深入解析Java并发之ArrayBlockingQueue
    本文详细探讨了ArrayBlockingQueue,这是一种基于数组实现的阻塞队列。ArrayBlockingQueue在初始化时需要指定容量,因此它是一个有界的阻塞队列。文章不仅介绍了其基本概念和数据结构,还深入分析了其源码实现,包括各种入队、出队、获取元素和删除元素的方法。 ... [详细]
  • 探索手机Java游戏及其模拟器
    本文探讨了手机Java游戏的发展历程及几款经典游戏,同时介绍了如何在现代安卓设备上使用模拟器重温这些经典。 ... [详细]
  • 本文探讨了在Python中多线程与多进程的性能差异,特别是在处理CPU密集型任务和I/O密集型任务时的表现。由于全局解释器锁(GIL)的存在,多线程在利用多核CPU方面表现不佳,而多进程则能有效利用多核资源。 ... [详细]
author-avatar
115路公交车_984
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有