CN116405191A - 兼容多类型图像载体的安全文本隐藏和提取方法 - Google Patents

兼容多类型图像载体的安全文本隐藏和提取方法 Download PDF

Info

Publication number
CN116405191A
CN116405191A CN202310324874.1A CN202310324874A CN116405191A CN 116405191 A CN116405191 A CN 116405191A CN 202310324874 A CN202310324874 A CN 202310324874A CN 116405191 A CN116405191 A CN 116405191A
Authority
CN
China
Prior art keywords
text
embedded
image
mode
image block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310324874.1A
Other languages
English (en)
Inventor
张昊
陈华瑾
张涛
汪然
杨孟钊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN202310324874.1A priority Critical patent/CN116405191A/zh
Publication of CN116405191A publication Critical patent/CN116405191A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0021Image watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/608Watermarking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

本发明提供一种兼容多类型图像载体的安全文本隐藏和提取方法。该隐藏方法包括:获取数字图像,得到其对应的像素值矩阵I;对I进行图像分块;确定待嵌入文本的编码类型和嵌入模式,并生成编码类型标识字段和嵌入模式标识字段;计算该编码类型和该嵌入模式下的嵌入容量;对待嵌入文本进行编码,计算编码后文本的长度并生成文本长度标识字段;生成隐蔽数据;将隐蔽数据分配至对应的图像块;针对需要被嵌入隐蔽数据的图像块,根据该图像块的原始像素均值和其需要嵌入的隐蔽数据对该图像块进行修改,得到新的图像块;重复上一直至所有需要被嵌入隐蔽数据的图像块均完成修改,此时将所有的图像块按照原图像格式进行存储,得到含有隐蔽数据的图像。

Description

兼容多类型图像载体的安全文本隐藏和提取方法
技术领域
本发明涉及多媒体信息安全技术领域,尤其涉及一种兼容多类型图像载体的安全文本隐藏和提取方法。
背景技术
传统的信息隐藏技术方案,主要针对隐藏信息的视觉隐蔽性,统计不可检测性,鲁棒性,容量等要素进行研究,且通常仅适合于某一种类型的图像载体。
发明内容
本发明旨在一种兼容JPEG和位图等多类型图像载体的安全文本隐藏和提取方法,针对文本类数据进行隐蔽,覆盖了国内外四种主流的字符编码方式,并为用户提供自定义编码接口,同时提供了数据容错恢复方案,以及多级安全的保护措施,能够抵抗JPEG压缩和重压缩,可用于水印嵌入和版权认证、公开信息的注记和传播、以及互信用户之间秘密消息的传递。
一方面,本发明提供一种兼容多类型图像载体的安全文本隐藏方法,包括:
步骤1:获取数字图像,将其转换到像素域得到其对应的像素值矩阵I;
步骤2:对所述像素值矩阵I进行图像分块,得到若干个图像块;
步骤3:确定待嵌入文本的编码类型和嵌入模式,并生成编码类型标识字段和嵌入模式标识字段;
步骤4:计算该编码类型和该嵌入模式下的嵌入容量;所述嵌入容量是指所述像素值矩阵I所能承载的文本占用的最大字节数;
步骤5:在该编码类型和该嵌入模式下对待嵌入文本进行编码,计算编码后文本的长度并生成文本长度标识字段;
步骤6:根据编码类型标识字段、嵌入模式标识字段、编码后文本和文本长度标识字段生成隐蔽数据;
步骤7:将隐蔽数据分配至对应的图像块;
步骤8:针对需要被嵌入隐蔽数据的图像块,根据该图像块的原始像素均值和其需要嵌入的隐蔽数据对该图像块进行修改,得到新的图像块;
步骤9:重复步骤8,直至所有需要被嵌入隐蔽数据的图像块均完成修改,此时将所有的图像块按照原图像格式进行存储,得到含有隐蔽数据的图像。
进一步地,所述编码类型是指ASCII码、GBK码、GB18030码、UTF-8码和用户自定义编码的任意一种;
所述嵌入模式是指大容量模式、容错模式、大容量加密模式和容错加密模式中的任意一种;其中,大容量模式是指待嵌入文本不加密情况下,每个图像块负载3比特隐蔽数据;容错模式是指待嵌入文本不加密情况下,每个图像块负载1比特隐蔽数据和2比特校验;大容量加密模式是指待嵌入文本加密情况下,每个图像块负载3比特隐蔽数据;容错加密模式是指待嵌入文本加密情况下,每个图像块负载1比特隐蔽数据和2比特校验。
进一步地,步骤4具体包括:
在大容量模式或者大容量加密模式下,若编码类型为ASCII码,则嵌入容量
Figure BDA0004152938730000021
若编码类型为其他类型,则嵌入容量/>
Figure BDA0004152938730000022
在容错模式或者容错加密模式下,若编码类型为ASCII码,则嵌入容量
Figure BDA0004152938730000023
若编码类型为其他类型,则嵌入容量/>
Figure BDA0004152938730000024
其中,L表示图像块的总数,f表示编码类型标识字段和嵌入模式标识字段两个字段所占用的图像块的个数,k表示用于文本长度标识字段所占用的图像块的个数。
进一步地,步骤5中还包括:
获取用户口令并对待嵌入文本进行加密;对应地,在该编码类型和该嵌入模式下对加密后的待嵌入文本进行编码;所述用户口令采用GBK码所覆盖的字符。
5.根据权利要求4所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,采用流对称加密算法对待嵌入文本进行加密。
进一步地,步骤7具体包括:
步骤7.1:按照逐列扫描顺序对所有图像块进行排序;
步骤7.2:使用前f+k个图像块来存储隐蔽数据的前3×(f+k)比特;
步骤7.3:设定伪随机数发生器的种子并生成伪随机数,所述伪随机数发生器是由梅森旋转算法构造的;
步骤7.3:按照生成伪随机数对剩余的L-f-k个图像块进行重新排序;
步骤7.4:按照每个图像块存储3比特数据的方式,依次使用在前的图像块来存储编码后的文本。
进一步地,步骤7.3中,伪随机数发生器的种子的设定方式为:
若待嵌入文本在编码之前未进行加密,或者待嵌入文本在编码之前虽进行加密但所使用的用户口令的长度不超过设定的字节阈值,则采用编码类型字段和文本长度字段组成的二进制数对应的整数作为种子;
若待嵌入文本在编码之前进行了加密且所使用的用户口令的长度超过设定的字节阈值,则将用户口令超过设定的字节阈值之后的部分对应的整数作为种子。
进一步地,步骤8具体包括:
步骤8.1:按照公式(1)计算图像块B(i,j)的原始像素平均值:
Figure BDA0004152938730000031
其中,round表示四舍五入取整运算,|B(i,j)|表示图像块B(i,j)中像素值的个数,i,j分别表示该图像块所在的行和列,i1,j1,t1分别表示图像块B(i,j)中像素所在的行、列和通道,I(i1,j1,t1)表示图像块B(i,j)中第i1行第j1列位置上、第t1个通道的像素值;
步骤8.2:将图像块B(i,j)需要嵌入的隐蔽数据转成一个取值范围位于0~7的整数d;
步骤8.3:比较d和(Imean)8是否相等,若相等,则不对图像块B(i,j)作修改,若不相等,则将原来的像素值I(i1,j1,t1)修改为新的像素值I(i1,j1,t1)′,即:I(i1,j1,t1)′=I(i1,j1,t1)-(Imean)8+d;其中,(Imean)8表示Imean被8除所得的余数。
进一步地,还包括:步骤8.4:若新的像素值I(i1,j1,t1)′大于255,则令I(i1,j1,t1)′=255;若新的I(i1,j1,t1)′小于0,则令I(i1,j1,t1)′=0;
步骤8.5:返回执行步骤8.1重新计算得到Imean,并再次执行步骤8.3,若相等,则该图像块B(i,j)完成修改。
另一方面,兼容多类型图像载体的安全文本提取方法,其特征在于,包括:
步骤1:读取含有隐蔽数据的图像;所述隐蔽数据是根据编码类型标识字段、嵌入模式标识字段、编码后文本和文本长度标识字段生成的;
步骤2:对图像进行分块,从所有图像块中确定编码类型标识字段和嵌入模式标识字段所在的图像块;并从图像块中读取所嵌入文本的编码类型和嵌入模式;
步骤3:计算该编码类型和该嵌入模式下的嵌入容量;所述嵌入容量是指所述像素值矩阵I所能承载的文本占用的最大字节数;
步骤4:根据所述嵌入容量计算得到文本长度标识字段所在的图像块,并从图像块中读取所嵌入文本的长度;
步骤5:根据所嵌入文本的长度计算得到所嵌入文本所在的图像块,并从图像块中读取编码后的所嵌入文本;
步骤6:根据编码类型对编码后的所嵌入文本进行解码,得到所嵌入文本。
本发明的有益效果:
(1)本发明对图像载体格式的兼容性好:本发明适用于JPEG图像和位图的载体,常见的位图格式比如BMP,PNG,TIFF,GIF等,图像可以是三通道的彩色图像,也可以是单通道的灰度图像。这些图像在互联网和计算机领域存在大量应用。由于图像采用8×8分块的像素亮度平均值作为信息的负载,能够较好地抵抗JPEG压缩和重压缩。特别是在容错模式下,当图像块的像素亮度平均值有±1的波动时,由于有纠错编码的存在,数据仍然可以正确恢复。
(2)本发明所采用的文本编码的通用性、效率和可靠性好:本发明采用了四种可选文本字符编码模式,涵盖了国内乃至国际上广泛使用的等长和变长编码标准;此外,还对ASCII码标准的编码模式进行了优化,使用7比特表示一个符号。这些设置在适应了国内外各种不同语言用户需求的同时,也提升了编码效率和隐藏数据容量。在嵌入数据时,根据隐蔽数据的重要性,用户可以采用容错模式,利用纠错编码增强可靠性,保障图像数据在噪声或JPEG压缩量化影响下仍然能够正确提取。而在非容错的大容量模式下,用户可以获得较大的嵌入容量。在此选择模式下,即便没有纠错码的帮助,只要图像数据在传输过程中经历的变化不影响各分块的像素亮度平均值,就不会对文本数据有破坏。
(3)采用本发明后的用户数据的安全性高:本发明对用户数据的保护主要依赖于两项主要技术和一项辅助技术,两项主要技术:一是流对称加密算法“TRIVIUM”,二是对分块嵌入顺序的置乱重排。用户可以根据隐蔽数据的重要性选择高级加密,中级加密,低级加密,或不加密(其中,大容量模式和容错模式对应不加密;大容量加密模式和容错加密模式按照重排列密钥的密级高低可以对应高级加密,中级加密,低级加密)。一项辅助技术:文本编码可以采用自定义方式,输入自定义的码表来实现对数据的保护,对于攻击者而言,码表的缺失将使其无法恢复正确的文本内容。
无论四种选择模式中的哪一种,分块的嵌入选择顺序都会进行重新排列,而不是用原始的列扫描顺序嵌入。四种选择的区别在于:高级加密模式的重排列密钥只有用户知道,而后三种选择下的重排列密钥是隐蔽数据的长度值,任何一个掌握该方案细节的攻击者在这些选择对应的图像中都可以获得该密钥。
重排列的意义在于让用户数据均匀的嵌入在整幅图像上。这意味着,对图像局部画面的内容修改或恶意地篡改(比如更换了图像中的人物),只会影响到彼此并不连续的几处字符。这样,当用户提取数据并恢复文本以后,可以根据自然语言的上下文关系发现文本的错误之处,并在多数情况下,根据自然语言的组合特点,能够在阅读过程中自行纠错。
低级和中级加密条件下,尽管攻击者能够获知嵌入顺序,但要获得文本信息,还必须获得密钥。此时,用户数据的安全性由国际标准的流对称加密算法“TRIVIUM”的安全性决定。要对密钥采用穷举攻击,则须考虑密钥空间的大小。低级加密模式,仅采用英文等单字节口令,或仅采用汉字等双字节口令,密钥空间较小,穷举难度较低,安全性能相对较低。中级加密,采用二者的混合,密钥空间大,穷举攻击难度大,安全性能高。因此,只要用户根据数据的重要性,合理设置密钥,就可以实现相应的保护级别。
“高级加密”对用户数据的保护是三种加密级别中最高水平的,体现在它不仅对用户数据加密,而且对数据的嵌入位置和顺序进行加密。使得攻击者面对的不只是一个单纯的序列加密问题,而是位置、顺序、取值都未知的问题。这样做的代价就是用户需要使用更长的口令。
附图说明
图1为本发明实施例提供的兼容多类型图像载体的安全文本隐藏方法的流程示意图;
图2为本发明实施例提供的图像三通道示意图;
图3为本发明实施例提供的图像分块示意图;
图4为本发明实施例提供的在数字水印和版权保护的应用场景下,将隐蔽数据嵌入图像后的效果图;
图5为本发明实施例提供的在公开信息的注记与传播的应用场景下,将隐蔽数据嵌入图像后的效果图;
图6为本发明实施例提供的在隐蔽通信和保密通信的应用场景下,将隐蔽数据嵌入图像后的效果图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本发明实施例提供一种兼容多类型图像载体的安全文本隐藏方法,包括以下步骤:
S101:获取数字图像,将其转换到像素域得到其对应的像素值矩阵I;
具体地,第i行第j列位置上、第t个通道的像素值用I(i,j,t),i=1,2,…,M,j=1,2,…,N,t=1,2,3表示。此处,图像文件格式类型可以是JPEG和位图(比如BMP,PNG,TIFF,GIF);图像可以是彩色图像,比如拥有RGB三通道像素值矩阵,用t=1,2,3表示;也可以是灰度图像,拥有单通道像素值矩阵,仅用t=1或省略t用I(i,j)表示。图像三通道示意图如图2所示。
S102:对所述像素值矩阵I进行图像分块,得到若干个图像块(也称为分块);
具体地,在实际应用中,一般按照自上而下(坐标i增加的方向),自左而右(坐标j增加的方向)的方式将图像分成若干个8×8大小的、彼此相邻而又不重叠的图像块。需要说明的是,若图像I的长M或宽N不能够被8整除,则最下边或最右边的图像块尺寸达不到8×8,但仍视作一个图像块(如图3所示)。
为便于图像块的叙述,用B(i,j),i=1,2,…,m,j=1,2,…,n表示第i行第j列的分块;此处,
Figure BDA0004152938730000061
分块总数量为L=mn。当图像是彩色图像时,分块B(i,j)包含了三个通道的对应分块B(i,j,k)。
S103:确定待嵌入文本的编码类型和嵌入模式,并生成编码类型标识字段和嵌入模式标识字段;
(一)可选的编码类型有如下五种:
(1)ASCII码:一种国际标准。若待嵌入文本只包含数字,26个英文字母大小写,以及标点符号空格换行符等内容,则可借助美国信息交换标准代码(ASCII码)编码,去掉最高位的0,每个符号用7比特二进制进行编码。
(2)GBK码:一种国家标准。每个字符用至多两个字节(16比特)进行编码。
(3)GB18030码:一种国家标准。每个字符用至多四个字节(32比特)进行编码。
(4)UTF-8码:一种国际标准。用至多6个字节表示一个字符。
(5)用户自定义编码:注意到GB18030兼容GBK码,所有能通过GBK码编码的文本字符,都存在于GB18030码集合中。因此,选项(2)还作为自定义选项存在,根据用户需要可以改为自定义的编码,隐蔽通信的双方共享和加载自定义码表即可使用该功能,这样可以进一步提升通信的安全性。当用户选择编码类型(2),同时提供了自定义码表,则表示用户采用自定义码表进行文本数据的编译码。自定义码表的结构是Unicode和自定义编码的对应表。Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。由用户输入文本的Unicode码索引到的用户自定义编码来生成隐蔽数据,即完成了自定义编码。反之,在译码时,由隐蔽数据编码反向索引到Unicode编码,即可恢复出数据文本。自定义编码采用等长码,长度是字节的整倍数。
选择好编码类型之后,则需要生成编码类型标识字段(称为CodeFlag字段)来指示。通过对CodeFlag字段定义不同取值来指示不同的编码类型,例如:
(1)若为ASCII码,则CodeFlag=’00’;
(2)若为GBK码或用户自定义编码,则CodeFlag=’01’;
(3)若为GB18030码,则CodeFlag=’10’;
(4)若为UTF-8码,则CodeFlag=’11’。
如此,根据用户选择的编码类型来生成CodeFlag字段。
进一步地,为了保证这一CodeFlag字段信息能够被无差错的提取,一般需要对它们的每一个信息比特进行编码得到纠错码字:对信息0编码对应的纠错码字为001,对信息1编码对应的纠错码字为110。如此,编码后的CodeFlag占用6比特。例如:原始的CodeFlag=’11’,则编码后的CodeFlag=’110110’。
(二)可选的嵌入模式有如下四种
(1)大容量模式:待嵌入文本不加密情况下,每个8×8块负载3比特隐蔽数据。
(2)容错模式:待嵌入文本不加密情况下,每个8×8块负载1比特隐蔽数据和2比特校验。
(3)大容量加密模式:待嵌入文本加密情况下,每个8×8块负载3比特隐蔽数据;用户口令要求为,在GB18030编码下,达到6~14个字节长度范围的文本字符。
(4)容错加密模式:待嵌入文本加密情况下,每个8×8块负载1比特隐蔽数据和2比特校验;用户口令要求为,在GB18030编码下,达到6~14个字节长度范围的文本字符。
选择好嵌入模式之后,则需要生成嵌入模式标识字段(称为ModeFlag字段)来指示。通过对ModeFlag字段定义不同取值来指示不同的嵌入模式,例如:
(1)若为大容量模式,则ModeFlag=‘00’;
(2)若为容错模式,则ModeFlag=‘01’;
(3)若为大容量加密模式,则ModeFlag=‘10’;
(4)若为容错加密模式,则ModeFlag=‘11’。
如此,根据用户选择的嵌入模式来生成ModeFlag字段。
进一步地,为了保证这一ModeFlag字段信息能够被无差错的提取,需要对它们的每一个信息比特进行编码得到纠错码字:对信息0编码对应的纠错码字为001,对信息1编码对应的纠错码字为110。编码后的ModeFlag占用6比特。例如:原始的ModeFlag=‘01’,则编码后的ModeFlag=‘001110’。
S104:计算该编码类型和该嵌入模式下的嵌入容量;所述嵌入容量是指所述像素值矩阵I所能承载的文本占用的最大字节数;
具体地,为了能够正确恢复隐蔽数据,需要嵌入的信息应包括:CodeFlag和ModeFlag。用f表示编码类型标识字段和嵌入模式标识字段两个字段所占用的图像块的个数,在采用上述编码方式下,可知字段CodeFlag和字段ModeFlag共计12比特,每3比特用1个8×8块负载,共计4个块,则f=4。
同理,为了能够正确恢复隐蔽数据,需要嵌入的信息还应包括:文本长度标识字段(也称TextLength字段),该字段标识用户输入文本的所占字节长度,设定该字段占用k比特,并用k表示用于文本长度标识字段所占用的图像块的个数;最后,需要嵌入的信息还包括待嵌入文本自身,用TextData来表示。
基于上述内容,若分块总数为L,采用f个块来嵌入CodeFlag和ModeFlag,采用k个块来嵌入k比特的TextLength,则嵌入容量(记作c)的计算过程如下:
(1)若用户选择大容量(或大容量加密)模式,则每个块可以嵌入3比特信息,则这L-f-k个分块可以存储3×(L-f-k)/7比特信息,对应的文本字节存储容量分为两种情况:
一是当文本编码类型选择为ASCII码时,可存储
Figure BDA0004152938730000091
个字节的文本,即
Figure BDA0004152938730000092
二是当文本编码类型选择为其他类型时,可存储/>
Figure BDA0004152938730000093
个字节的文本,即/>
Figure BDA0004152938730000094
(2)若用户选择容错(或容错加密)模式,则每个块可以嵌入1比特信息和2比特校验,这L-f-k个分块只能存储(L-f-k)比特信息,对应的文本字节存储容量仍然分为两种情况:
一是当文本编码类型选择为ASCII码时,可存储
Figure BDA0004152938730000095
个字节的文本,即
Figure BDA0004152938730000096
二是当文本编码类型选择为其他类型时,可存储/>
Figure BDA0004152938730000097
个字节的文本,即
Figure BDA0004152938730000098
无论以上哪种情况,只需求出满足2k≥c的最小k值即可获得文本字节的嵌入容量c。
S105:在该编码类型和该嵌入模式下对待嵌入文本进行编码,计算编码后文本的长度并生成文本长度标识字段;
具体地,实际应用中,在执行本步骤之前,设用户输入的文本字符所占字节长度为l,根据用户选择的隐蔽数据嵌入模式给出对应的嵌入容量c,比较l和c的大小,若取l>c,则发出警报,说明该待嵌入文本的长度超过嵌入容量。否则,开始执行本步骤。
字段TextLength的值为l的二进制表示,进一步的,为了保证这一TextLength字段能够被无差错的提取,对它的每一个信息比特进行编码得到纠错码字:对信息0编码对应的纠错码字为001,对信息1编码对应的纠错码字为110。如此,编码后的TextLength需要占用3k比特。
实际嵌入的文本数据用TextData标识。
(1)若用户选择大容量模式,当文本编码类型选择为ASCII码时,TextData占用7l比特,当文本编码类型选择为其他类型时,TextData占用8l比特。
(2)若用户选择容错模式,对文本字符的每一个信息比特进行编码得到纠错码字:对信息0编码对应的纠错码字为001,对信息1编码对应的纠错码字为110。因此,当文本编码类型选择为ASCII码时,TextData占用21l比特,当文本编码类型选择为其他类型时,TextData占用24l比特。
S106:根据编码类型标识字段、嵌入模式标识字段、编码后文本和文本长度标识字段生成隐蔽数据;
具体地,最终形成的隐蔽数据的待嵌入情况如表1所示。
表1隐蔽数据的待嵌入情况
Figure BDA0004152938730000101
由表1可知:大容量模式下,隐蔽数据的总长度12+3k+7l或12+3k+8l比特;容错模式下,总长度12+3k+21l或12+3k+24l比特。大容量模式下,参数l满足
Figure BDA0004152938730000102
Figure BDA0004152938730000103
容错模式下,参数l满足4+k+7l≤L,或4+k+8l≤L。大容量模式下,参数l的取值上限约为容错模式下的3倍。
S107:将隐蔽数据分配至对应的图像块;
具体地,用户根据需要进行自定义隐蔽数据分配策略即可。本实施例中,采用的隐蔽数据分配策略如下:
S1071:按照逐列扫描顺序对所有图像块进行排序;如:B(1,1),B(1,2),…,B(1,n),B(2,1),B(2,2),…,B(2,n),…,B(m,1),B(m,2),…,B(m,n);
S1072:使用前f+k个图像块来存储隐蔽数据的前3×(f+k)比特;
S1073:采用编码类型字段和文本长度字段组成的二进制数对应的整数作为伪随机数发生器的种子并生成伪随机数,所述伪随机数发生器是由梅森旋转算法构造的;
S1073:按照生成伪随机数对剩余的L-f-k个图像块进行重新排序;
S1074:按照每个图像块存储3比特数据的方式,依次使用在前的图像块来存储编码后的文本。
S108:针对需要被嵌入隐蔽数据的图像块,根据该图像块的原始像素均值和其需要嵌入的隐蔽数据对该图像块进行修改,得到新的图像块;
具体地,本步骤具体包括以下子步骤:
S1081:按照公式(1)计算图像块B(i,j)的原始像素平均值:
Figure BDA0004152938730000111
其中,round表示四舍五入取整运算,|B(i,j)|表示图像块B(i,j)中像素值的个数,i,j分别表示该图像块所在的行和列,i1,j1,t1分别表示图像块B(i,j)中像素所在的行、列和通道,I(i1,I1,t1)表示图像块B(i,j)中第i1行第j1列位置上、第I1个通道的像素值;
S1082:将图像块B(i,j)需要嵌入的隐蔽数据转成一个取值范围位于0~7的整数d。
S1083:比较d和(Imean)8是否相等,若相等,则不对图像块B(i,j)作修改,若不相等,则将原来的像素值I(i1,j1,t1)修改为新的像素值I(i1,j1,t1)′,即:I(i1,j1,t1)′=I(i1,j1,t1)-(Imean)8+d;其中,(Imean)8表示Imean被8除所得的余数。
需要说明的是,新的像素值I(i1,j1,t1)′可能会超出图像要求的正常亮度级范围。当新的像素值取值超出图像要求的正常亮度级范围时,须进行截断。因此,在上述内容的基础上,还包括以下步骤:
S1084:像素值的取值范围为[0,255],若新的像素值I(i1,j1,t1)′大于255,则令I(i1,j1,t1)′=255;若新的I(i1,j1,t1)′小于0,则令I(i1,j1,t1)′=0。
S1085:返回执行步骤S1081重新计算得到Imean,并再次执行步骤S1083,若相等,则该图像块B(i,j)完成修改。
S109:重复S108,直至所有需要被嵌入隐蔽数据的图像块均完成修改,此时将所有的图像块按照原图像格式进行存储,得到含有隐蔽数据的图像。
实施例2
上述实施例中,待嵌入文本是以明文形式进行编码的;对应的,随后形成的隐蔽数据自然也是明文形式的。为了进一步提高方法的安全性能,在上述实施例的基础上,本发明实施例提供的兼容多类型图像载体的安全文本隐藏方法与上述实施例的不同之处在于,本实施例将步骤S105修改为:
S105:获取用户口令并对待嵌入文本进行加密,在该编码类型和该嵌入模式下对加密后的待嵌入文本进行编码,计算编码后文本的长度并生成文本长度标识字段;所述用户口令采用GBK码所覆盖的字符;
对应地,步骤S107中,伪随机数发生器的种子的设定方式存在以下两种情况:
若所采用的用户口令的长度不超过设定的字节阈值,则采用编码类型字段和文本长度字段组成的二进制数对应的整数作为种子;若所采用的用户口令的长度超过设定的字节阈值,则将用户口令超过设定的字节阈值之后的部分对应的整数作为种子。
本实施例的其他步骤则与实施例1相同,此处不再赘述。
具体地,本实施例采用流对称加密算法“TRIVIUM”对待嵌入文本进行加密。按照该加密算法要求,设定的字节阈值为10个字节。用户口令限定为长度不超过14个字节(即112比特)编码长度的输入字符序列。如内容全为单字节表示的英文、数字等字符,则最多输入14个字符;如内容全为双字节表示的汉字等字符,则最多输入7个字符;如为二者的混合,则可以使用t个中文字符和14-2t个英文\数字的组合(1≤t≤4)。
根据其具体长度和字符类型划分为三种不同的加密保护级别(“弱”、“中”和“强”)。当该比特序列长度不超过80比特时,对应“弱”级和“中”级,当输入字符全为英文、数字等单字节编码符号,或者全为汉字等双字节表示字符时,为“弱”级;当输入字符既包含英文、数字等单字节编码符号,也包含汉字等双字节表示字符时,为“中”级。将这80比特(不足80比特则在后面补零以达到80比特)作为密钥,用“TRIVIUM”算法实现对文本数据的加密,“TRIVIUM”算法中的80比特初始化向量IV设定为全1。当该比特序列长度超过80比特时,对应“强”级,该比特序列的前80比特用做密钥,用“TRIVIUM”算法实现对文本数据的加密,“TRIVIUM”算法中的80比特初始化向量IV设定为全1。
实施例3
对应上述的隐藏方法,本实施例提供一种兼容多类型图像载体的安全文本提取方法,包括以下步骤:
S301:读取含有隐蔽数据的图像;所述隐蔽数据是根据编码类型标识字段、嵌入模式标识字段、编码后文本和文本长度标识字段生成的;
S302:对图像进行分块,从所有图像块中确定编码类型标识字段和嵌入模式标识字段所在的图像块;并从图像块中读取所嵌入文本的编码类型和嵌入模式;
具体地,将含有隐蔽数据的图像读取到像素域,图像块按照逐列扫描顺序排序得到原始的排列顺序:B(1,1),B(1,2),…,B(1,n),B(2,1),B(2,2),…,B(2,n),…,B(m,1),B(m,2),…,B(m,n)。
从前f个分块中读取隐蔽数据的字段ModeFlag和字段CodeFlag。具体过程如下:按照公式(1)计算每个分块B(i,j)的像素值平均值:
将(Imean)8转化得到3比特的二进制数据d,若存在某个块的d值既不等于(001),也不等于(110),则认为该图像不含隐蔽数据,或隐蔽数据被破坏,无法正确提取。否则,完成译码:
若d=(001),则取比特0作为译码结果。
若d=(110),则取比特1作为译码结果。
从而获得原始字段ModeFlag和字段CodeFlag各2比特信息:
由ModeFlag的第一比特获得隐蔽数据是否加密的信息:若ModeFlag的第一比特为0,则认为该隐蔽数据属于非加密状态。若ModeFlag的第一比特为1,则认为该隐蔽数据属于加密状态。由ModeFlag的第二比特获得隐蔽数据的嵌入模式:若ModeFlag的第二比特为0,则认为该隐蔽数据属于大容量嵌入模式。若ModeFlag的第二比特为1,则认为该隐蔽数据属于容错嵌入模式。
由CodeFlag的获得文本编码类型的信息:若CodeFlag=’00’,则认为该隐蔽数据使用的文本编码类型为ASCII码。若CodeFlag=’01’,则认为该隐蔽数据使用的文本编码类型为GBK码。若CodeFlag=’10’,则认为该隐蔽数据使用的文本编码类型为GB18030码。若CodeFlag=’11’,则认为该隐蔽数据使用的文本编码类型为UTF-8码。
S303:计算该编码类型和该嵌入模式下的嵌入容量;所述嵌入容量是指所述像素值矩阵I所能承载的文本占用的最大字节数;
具体地,根据隐蔽数据使用的文本编码类型,计算容量和字段TextLength的占用分块数k,具体是:根据不等式2k≥c求解出k的最大解作为k值。当文本编码类型选择为ASCII码时,嵌入容量
Figure BDA0004152938730000131
当文本编码类型选择为其他类型时,嵌入容量/>
Figure BDA0004152938730000132
S304:根据所述嵌入容量计算得到文本长度标识字段所在的图像块,并从图像块中读取所嵌入文本的长度;
具体地,从第f+1到f+k个分块中得到关于字段TextLength,具体过程如下:按照公式(1)计算每个分块的像素值平均值
将(Imean)8转化得到3比特的二进制数据d,若d=(100)或(011),则认为该图像不含隐蔽数据,或隐蔽数据被破坏,无法正确提取。
若d=(001)或(000)或(010),则取比特0作为译码结果。
若d=(110)或(101)或(111),则取比特1作为译码结果。
继而得到原始的k比特TextLength数据。将这k比特转化为一个整数,即为实际嵌入的数据字节长度l。
S305:根据所嵌入文本的长度计算得到所嵌入文本所在的图像块,并从图像块中读取编码后的所嵌入文本;
(一)当ModeFlag的第1比特取值为0时,可知用户使用了非加密模式。以下是读取非加密隐蔽数据的过程。
当ModeFlag的第1比特取值为0时,可知用户使用了非加密模式。以下是读取非加密隐蔽数据的过程。
(1)确定隐蔽数据文本内容的比特长度:
若该隐蔽数据属于大容量嵌入模式,分两种情况描述:一是当文本编码类型选择为ASCII码时,实际嵌入的比特长度为7l;二是当文本编码类型选择为其他类型时,实际嵌入的比特长度为8l。若实际嵌入的比特长度不被3整除,则补1或2个0,使得总长度被3整除。
若该隐蔽数据属于容错嵌入模式,分两种情况描述:一是当文本编码类型选择为ASCII码时,实际嵌入的比特长度为21l;二是当文本编码类型选择为其他类型时,实际嵌入的比特长度为24l。
(2)识别作为TextData负载的块及嵌入顺序。由梅森旋转算法(MersenneTwister算法)构造的伪随机数发生器得到剩余L-4-k个块的一个排序(回顾:在列扫描的原始排序中,前4+k个块用来负载字段ModeFlag、CodeFlag、TextLength),种子采用原始的CodeFlag和TextLength组成的二进制数对应的整数,排序居前的作为隐蔽数据TextData的负载。
(3)从每个负载块中提取隐蔽数据,并按照(MersenneTwister算法得到的)排序完成隐蔽数据的拼接。从每个负载块中提取隐蔽数据的过程如下:按照公式(1)计算每个分块B(i,j)的像素值平均值
将(Imean)8转化得到3比特的二进制数据d。若为大容量模式,当数据存在补0操作时,在提取结尾比特时,需要将补的0去掉;否则,二进制数据d即为隐蔽数据。若为容错模式,则需要完成译码:
若d=(001)或(000)或(010),则取比特0作为译码结果。
若d=(110)或(101)或(111),则取比特1作为译码结果。
(4)将每个块提取的隐蔽数据按照顺序拼接得到原始的TextData数据。
(二)当ModeFlag的第1比特取值为0时,可知用户使用了加密模式。以下是读取加密隐蔽数据的过程。
读取加密隐蔽数据仍然需要4步,其中(1)(3)步与读取非加密隐蔽数据的(1)(3)步相同,但第(2)步中种子的选择会有区别,第(4)步则需要增加解密的过程。
第(2)步中,根据用户口令,计算密钥长度是否超过了10个字节长度。若未超过,则第(2)步种子的选择与非加密隐蔽数据读取的方法一致。若超过了,则第(2)步中的种子应当换成“口令中超过10个字节长度之后的比特对应的整数”,其他内容不变。
第(4)步中,将每个块提取的隐蔽数据按照顺序拼接得到原始的TextData数据。然后根据用户口令,得到80比特的密钥。若口令长度超过80比特,则截取前80比特作为密钥,若口令长度不足80比特,则在后面补零达到80比特。使用此密钥和“TRIVIUM”算法将TextData数据解密。
S306:根据编码类型对编码后的所嵌入文本进行解码,得到所嵌入文本。
具体地,当文本编码类型选择为ASCII码时,对TextData数据每7比特前面补0作为一个字节,按照字符编码规则,得到文本内容。
当文本编码类型选择为其他类型(GBK码、GB18030码、UTF-8码)时,对TextData数据每8比特一组作为一个字节,按照字符编码规则,得到文本内容。
当出现字符编码集合中不存在的编码时,标记字符的位置,并提示用户隐蔽数据存在错误。
实施例4
在上述实施例中,提及:如果从最前面的4个分块中读取隐蔽数据的字段ModeFlag和字段CodeFlag时,遇到存在某个块的d值既不等于(001),也不等于(110),则会认为该图像不含隐蔽数据,或隐蔽数据被破坏,无法正确提取。当遇到上述情况时,本实施例提供一种恢复文本信息的方式。具体如下:
采用关键字段矫正模式或用户自选模式提取和恢复文本信息。
(1)关键字段矫正模式
通过译码,强制恢复字段ModeFlag和字段CodeFlag的信息:
若d=(001)或(000)或(010),则取比特0作为译码结果。
若d=(110)或(101)或(111),则取比特1作为译码结果。
但若d=(100)或(011),则在此模式下,仍然无法提取,并提示用户“该图像不含隐蔽数据,或隐蔽数据被破坏,无法正确提取”。
进一步,可以采用“用户自选模式”尝试恢复数据。
(2)用户自选模式
由用户自行设定隐蔽数据的文本编码类型和嵌入模式,从而按照隐蔽数据嵌入规则得到字段ModeFlag和字段CodeFlag,然后尝试对隐蔽数据进行提取。
该模式主要用于关键字段矫正提取方法失败的情况下(存在某个块的d=(100)或(011))。
实施例5
在数字水印和版权保护的应用场景下,采用水印数据作为待嵌入文本进行嵌入隐藏和提取。具体过程如下:(1)~(12)是嵌入过程,(13)之后是提取水印的过程。
(1)设用户选择图像载体为标准图像‘lena.bmp’
读取图像得到像素矩阵,行数M=1080,列数N=1080,划分成8×8的分块,共产生总块数为L=18225,行数为
Figure BDA0004152938730000161
列数为/>
Figure BDA0004152938730000162
(2)设用户选择容错加密模式,则ModeFlag=’11’。
(3)设用户选择ASCII码,则CodeFlag=’00’。计算出ASCII码的嵌入容量为2601个字节,需要12个比特用于存储数据字节长度TextLength。
(4)设用户输入文本字符作为水印数据:Copyright
按照字符编码(ASCII码)转换为比特序列:
01000011 01101111 01110000 01111001 01110010 01101001 0110011101101000 01110100
每字符8比特去掉最高位的0,用7比特表示
1000011 1101111 1110000 1111001 1110010 1101001 110011111010001110100
得到文本数据字段为63比特:
TextData=[1000011 1101111 1110000 1111001 1110010 110100111001111101000 1110100]
共含有9个字节,得到文本数据长度字段12比特:
TextLength=[0 0 0 0 0 0 0 0 1 0 0 1]
(5)设用户口令为1234567890ab,转换为GBK18030字符编码的二进制形式:
001100000011000100110010001100110011010000110101001101100011011100111000001110010110000101100010
口令长度超过80比特,密钥级别为强,取前80比特作为加密密钥:
Key=[00110000001100010011001000110011001101000011010100110110001101110011100000111001]
分块置乱排序算法的种子为从第口令的81比特到最后的二进制向量0110000101100010对应的整数值24930
(6)加密后数据:
TextData=[001010111100010100010100110000011010010010000000100010001010011]
(7)加入纠错码后,0对应001,1对应110,数据长度为189比特
TextData=[001001110001110001110110110110001001001110001110001001001110001110001001110110001001001001001110110001110001001110001001110001001001001001001001110001001001110001001001110001110001001110110]
(8)嵌入ModeFlag
在列扫描得到的第1-2两个分块中,嵌入添加纠错码后的ModeFlag=[110,110]
第1个分块的像素值平均值为163,模8余3,需要嵌入的是6,因此将整个分块的灰度值加3,得到新块的像素值平均值达到166,达到模8余3的状态。
第2个分块的像素值平均值为160,模8余0,需要嵌入的是6,因此将整个分块的灰度值加6,得到新块的像素值平均值达到166,达到模8余6的状态。
(9)嵌入CodeFlag
在列扫描得到的第3-4两个分块中,嵌入添加纠错码后的CodeFlag=[001,001]
第3个分块的像素值平均值为157,模8余5,需要嵌入的是1,因此将整个分块的灰度值减4,得到新块的像素值平均值达到153,达到模8余1的状态。
第4个分块的像素值平均值为155,模8余3,需要嵌入的是1,因此将整个分块的灰度值减2,得到新块的像素值平均值达到153,达到模8余1的状态。
(10)嵌入TextLength
在列扫描得到的第5-16共12个分块中,嵌入添加纠错码后的TextLegnth=[001001 001 001 001 001 001 001 110 001 001 110]
得到这些分块像素平均值模8的余数依次为:4,2,2,3,5,5,0,6,1,7,7,0。依次对每个分块的像素值进行-3,-1,-1,-2,-4,-4,+1,-5,+5,-6,-6,+6的操作。
(11)嵌入TextData
根据置换重排序的种子24930对剩余的L-4-k=18209个分块进行重新排列,排序居前的63个块在原始列扫描中的序号是[6611 11187 1872 15207 1686314587 856813262 16586 7260 2610 14165 3524 12415 7685 17248 12097 16960 7359 13135 36869309 13190 481 14422 7235 5563 13276 6058 11725 7088 13037 11015 5786 1737914009 7303 16607 10552 14518 11420 2044 8659 644 975 5583 12792 10915 163093556 11326 12777 4367 15098 8700 15715 8203 3070 49715506 3368 6215 6029]
按照这样的重排列顺序,每个分块嵌入3比特信息,总计189比特。每个块的修改按照图像分块修改策略进行修改,过程如同ModeFlag、CodeFlag、TextLength的嵌入。如图,将作为ModeFlag、CodeFlag、TextLength、TextData数据负载位置的小块用黑色标识出来,除了列扫描开始的16个小块集中分布在左上角之外,其他小块均匀散布在图像的其他位置。如图4所示。
(12)将修改后的图像仍然存储为位图bmp格式。
(13)假设某用户得到的是含水印图像‘lena.bmp’对应的质量因子75的JPG压缩图像,读取图像得到像素矩阵,行数M=1080,列数N=1080,划分成8×8的分块,共产生总块数为L=18225,行数为
Figure BDA0004152938730000181
列数为/>
Figure BDA0004152938730000182
(14)一般情况下,默认选择常规提取方法,即:将分块按照列扫描顺序,从第1-2两个分块中获取像素均值依次为166,167,模8余数依次为6,7,分解成比特表示为[110 111],由于纠错码字不存在111,因此,在常规提取方法中,第二个分块无法提取到有效的ModeFlag,此时提示用户:
“该图像不含隐蔽数据,或隐蔽数据被破坏,无法正确提取。”
(15)选择关键字段矫正提取方法,即:将分块按照列扫描顺序,从第1-2两个分块中获取像素均值依次为166,167,模8余数依次为6,7,分解成比特表示为[110 111],按照纠错码译码规则进行译码操作:对(001)或(000)或(010)的情况,则取比特0作为译码结果;对(110)或(101)或(111)的情况,则取比特1作为译码结果。得到ModeFlag=[11]。即获知该隐蔽数据采用容错加密模式。
(16)从第3-4两个分块中获取像素均值依次为153,153,模8余数依次为1,1,分解成比特表示为[001 001],按照纠错码译码规则进行译码操作:得到CodeFlag=[00]。即获知该隐蔽数据ASCII码的文本编码。计算出ASCII码的嵌入容量为2601个字节,需要12个比特用于存储数据字节长度TextLength。
(17)从第5-16等12个分块中获取像素均值依次为
153,153,154,154,153,153,160,154,166,153,153,166
模8得到3比特码字:[001 001 010 010 001 001 000 010 110 001 001 110]
译码得到:TextLength=[0 0 0 0 0 0 0 0 1 0 0 1]
将TextLength转化为整数值等于9,这说明有9个字节的隐蔽数据。在ASCII码编码和容错模式下,这9个字节的数据使用了63个分块进行存储。
(18)由于数据采用容错加密模式,因此要求用户输入口令,待用户输入正确的口令“1234567890ab”后,计算密钥和置乱排序种子。在GB18030文本编码下,密钥长度超过了10个字节,前10个字节“1234567890”对应的比特序列[00110000001100010011001000110011001101000011010100110110001101110011100000111001]作为解密密钥。后面的字节“ab”对应的比特序列[0110000101100010]对应的整数值24930作为置乱排序种子。
(19)根据置乱排序种子24930对列扫描得到的除前16个分块外的其他L-16=18209个分块进行排序,得到排序居前的63个分块的序号:[6611 11187 187215207 1686314587 8568 13262 16586 7260 2610 14165 3524 12415 7685 17248 12097 16960 735913135 3686 9309 13190 481 14422 7235 5563 13276 6058 11725 7088 13037 110155786 17379 14009 7303 16607 10552 14518 11420 2044 8659 644 9755 583 1279210915 16309 3556 11326 12777 4367 15098 8700 15715 82033070 4971 5506 33686215 6029],将这些分块的像素均值计算出来,并模8得到:
[11 51 6 1 6 6 6 6 1 0 1 6 1 6 1 1 17 2 6 1 0 6 7 2 1 2 1 0 6 6 0 6 11 51 1 7 1 1 00 1 1 1 61 1 1 6 1 1 1 61 6 0 2 6 6]
再进行二进制分解,得到比特序列。
[001 001 101 001 110 001 110 110 110 110 001 000 001 110 001 110 001001001 111 010 110 001 000 110 111 010 001 010 001 000 110 110 000 110 001001 101 001 001 111 001 001 000 000 001 001 001 110 001 001 001 110 001 001001 110 001110 000 010 110 110]
完成译码得到:
[0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 1 01 0 0 1 0 0 1 0 00 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1]
(20)使用trivium算法和密钥完成数据的解密,得到:
[1000011 1101111 1110000 1111001 1110010 1101001 110011111010001110100]
然后每7比特一组,前面加0,使用ASCII码编码得到文本:Copyright。
从上述内容可以看出,本发明提供的文本隐藏和提取方法可以实现版权保护,加密算法可以保证只有水印嵌入者(通常是版权所有者)才能验证该文本信息。从水印分类的角度看,这属于不可见水印。
实施例6
在公开信息的注记与传播的应用场景下,将公开信息作为待嵌入文本进行嵌入隐藏和提取。具体过程如下:(1)~(10)是嵌入过程,(11)以后是提取过程。
(1)设用户选择图像载体为标准图像‘lena.bmp’;
读取图像得到像素矩阵,行数M=1080,列数N=1080,划分成8×8的分块,共产生总块数为L=18225,行数为
Figure BDA0004152938730000201
列数为/>
Figure BDA0004152938730000202
(2)设用户选择大容量模式,则ModeFlag=’00’。
(3)设用户选择GB18030编码,则CodeFlag=’10’。计算出GB18030码的嵌入容量为6828个字节,需要13个比特用于存储数据字节长度TextLength。
(4)设用户输入文本字符作为隐蔽数据:1972年11月花花公子杂志
按照字符编码(GB18030码)转换为比特序列TextData:
00110001001110010011011100110010110001001110101000110001001100011101010011000010101110111010100010111011101010001011100110101011110101111101001111010100110100111101011010111110
该长度为176比特,共含有22个字节,得到文本数据长度字段13比特:
TextLength=[0 0 0 0 0 0 0 0 1 0 1 1 0]
由于是大容量模式,TextData长度必须被3整除,因此在后面补1个0,最终TextData长度为177比特
TextData=[001100010011100100110111001100101100010011101010001100010011000111010100110000101011101110101000101110111010100010111001101010111101011111010011110101001101001111010110101111100]
每3个比特使用一个图像分块负载,嵌入这177比特数据总共需要177/3=59个分块。
(5)由于采用的是非加密模式,用CodeFlag和TextLength连接的二进制向量[1 00 0 0 0 0 0 0 0 1 0 1 1 0]对应的整数值16406作为置乱重排列的种子。
(6)嵌入ModeFlag
在列扫描得到的第1-2两个分块中,嵌入添加纠错码后的ModeFlag=[001,001]
第1个分块的像素值平均值为163,模8余3,需要嵌入的是1,因此将整个分块的灰度值减2,得到新块的像素值平均值达到161,达到模8余1的状态。
第2个分块的像素值平均值为160,模8余0,需要嵌入的是1,因此将整个分块的灰度值加1,得到新块的像素值平均值达到161,达到模8余1的状态。
(7)嵌入CodeFlag
在列扫描得到的第3-4两个分块中,嵌入添加纠错码后的CodeFlag=[110,001]
第3个分块的像素值平均值为157,模8余5,需要嵌入的是6,因此将整个分块的灰度值加1,得到新块的像素值平均值达到158,达到模8余6的状态。
第4个分块的像素值平均值为155,模8余3,需要嵌入的是1,因此将整个分块的灰度值减2,得到新块的像素值平均值达到153,达到模8余1的状态。
(8)嵌入TextLength
在列扫描得到的第5-17共13个分块中,嵌入添加纠错码后的TextLegnth=[001001 001 001 001 001 001 001 110 001 110 110 001]
得到这些分块像素平均值模8余数依次为:4,2,2,3,5,5,0,6,1,7,7,0,2,依次对每个分块像素值进行-3,-1,-1,-2,-4,-4,+1,-5,+5,-6,-1,+6,-1的操作。
(9)嵌入TextData
根据置换重排序的种子16406对剩余的L-4-k=18208个分块进行重新排列,排序居前的59个块在原始列扫描中的序号是[16520 9337 16486 10635 815412150 151104230 7759 4945 1991 7105 16864 16409 14802 626 2386 7645 14790 7034 127102891 4876 9929 469 1599 1534 8775 5166 6302 15574 11556 2530 11348 1853 158363596 5714 16560 6216 14318 13502 3147 13539 13215 1354910798 11000 14684 38762907 9849 16148 4323 13758 15213 16987 11295 4275]
按照这样的重排列顺序,每个分块嵌入3比特信息,总计177比特。每个块的修改按照图像分块修改策略进行修改,过程如同ModeFlag、CodeFlag、TextLength的嵌入。如图,将作为ModeFlag、CodeFlag、TextLength、TextData数据负载位置的小块用黑色标识出来,除了列扫描开始的17个小块集中分布在左上角之外,其他小块均匀散布在图像的其他位置。如图5所示。
(10)将修改后的图像仍然存储为位图bmp格式。
(11)读取含隐蔽数据的图像‘lena.bmp’。
读取图像得到像素矩阵,行数M=1080,列数N=1080,划分成8×8的分块,共产生总块数为L=18225,行数为
Figure BDA0004152938730000221
列数为/>
Figure BDA0004152938730000222
(12)一般情况下,默认选择常规提取方法。将分块按照列扫描顺序,从第1-2两个分块中获取像素均值依次为161,161,模8余数依次为1,1,分解成比特表示为[001 001],得到ModeFlag=[00]。即获知该隐蔽数据采用大容量模式。
(13)从第3-4两个分块中获取像素均值依次为158,153,模8余数依次为6,1,分解成比特表示为[110 001],按照纠错码译码规则进行译码操作:得到CodeFlag=[10]。即获知该隐蔽数据GB18030码的文本编码。计算出GB18030码的嵌入容量为6828,需要13个比特用于存储数据字节长度TextLength。
(14)从第5-17等13个分块中获取像素均值依次为
153 153 153 153 153 153 161 153 166 153 158 166 161
模8得到3比特码字:[001 001 001 001 001 001 001 001 110 001 110 110001]
译码得到:TextLength=[0 0 0 0 0 0 0 0 1 0 1 1 0]
将TextLength转化为整数值等于22,这说明有22个字节的隐蔽数据。在GB18030码编码和大容量模式下,这22个字节共176比特的数据使用了
Figure BDA0004152938730000223
个分块进行存储。
(15)由于是非加密模式,用CodeFlag和TextLength连接的二进制向量[1 00 0 00 0 0 0 0 1 0 1 1 0]对应的整数值16406作为置乱重排列的种子。
(16)根据置换重排序的种子16406对剩余的L-4-k=18208个分块进行重新排列,排序居前的59个块在原始列扫描中的序号是[16520 9337 16486 10635 815412150 151104230 7759 4945 1991 7105 16864 16409 14802 626 2386 7645 14790 7034 127102891 4876 9929 469 1599 1534 8775 5166 6302 15574 11556 2530 11348 1853 158363596 5714 16560 6216 14318 13502 3147 13539 13215 1354910798 11000 14684 38762907 9849 16148 4323 13758 15213 16987 11295 4275]。
(17)按照这样的重排列顺序,每个分块的像素均值模8提取3比特信息,总计177比特。177被8除余1,说明补0的数量为1。去掉多余的这一比特0,共176比特,按照每8比特一个字节,并按照GB180303编码进行译码,得到文本:1972年11月花花公子杂志。
本实施例将可公开的信息嵌入图像载体中,比如嵌入信息是这幅图像的出处来源——“1972年11月花花公子杂志”,作为这幅图像内容的一个注记,供分享到这幅图像的用户查看。除此之外,嵌入的隐蔽数据也可以是需要传递给可能拿到这幅图像用户的其他可公开消息。
实施例7
在隐蔽通信和保密通信的应用场景下,将秘密信息作为待嵌入文本进行嵌入隐藏和提取。具体过程如下:(1)~(12)是嵌入过程,(13)之后是提取隐蔽数据的过程。
(1)设用户选择图像载体为JPG格式的标准图像‘lena.jpg’
读取图像得到像素矩阵,行数M=1080,列数N=1080,划分成8×8的分块,共产生总块数为L=18225,行数为
Figure BDA0004152938730000231
列数为/>
Figure BDA0004152938730000232
(2)设用户选择容错加密模式,则ModeFlag=’11’。
(3)设用户选择自定义编码,并输入码表,则CodeFlag=’01’,这里假设码表是ASCII码的变形:将原码表中每个符号的最高位0修改为1进行编码。部分字符示例:
文本 unicode(ASCII码范围) 自定义编码
a 01100001 11100001
B 01000010 11000010
: 00111010 10111010
计算出自定义编码的嵌入容量为2276个字节,需要12个比特用于存储数据字节长度TextLength。
(4)设用户输入秘密消息文本字符:“I arrive in Beijing at 10:00on January1.”
按照字符编码(unicode(ASCII码范围))转换为比特序列:
010010010010000001100001011100100111001001101001011101100110010100100000011010010110111000100000010000100110010101101001011010100110100101101110011001110010000001100001011101000010000000110001001100000011101000110000001100000010000001101111011011100010000001001010011000010110111001110101011000010111001001111001001000000011000100101110
转换为用户自定义编码,每字符8比特最高位的0变成1,得到文本数据:
11001001 10100000 11100001 11110010 11110010 11101001 1111011011100101 10100000 11101001 11101110 10100000 11000010 11100101 1110100111101010 11101001 11101110 11100111 10100000 11100001 11110100 1010000010110001 10110000 10111010 10110000 10110000 10100000 11101111 1110111010100000 11001010 11100001 11101110 11110101 11100001 11110010 1111100110100000 10110001 10101110
该长度为336比特,共含有42个字节,得到文本数据长度字段12比特:
TextLength=[0 0 0 0 0 0 1 0 1 0 1 0]
(5)设用户口令为“一二三abc”,转换为GBK18030字符编码的二进制形式:
110100101011101110110110111111101100100011111101011000010110001001100011
口令内容包括了不足10个字节的字母和汉字两种字符,告知用户密钥强度级别为中,口令长度不足80比特,因此在后面补零,得到的80比特作为加密密钥:
Key=[11010010101110111011011011111110110010001111110101100001011000100110001100000000]
分块置乱排序算法的种子取CodeFlag和TextLength连接的二进制向量[0 1 00 00 0 0 1 0 1 0 1 0]对应的整数值4138。
(6)加密后数据:
TextData=[0010111011001100101001000111100001111111101001011010101101000001101001101000111010000101000101100100111110111101000011000110110 0011010010110101100001111000111010101100000111101011001111001101110011 1001000010100001110011010111101101101100011100011011110000010011110000101000100101111101100101101110010101111111011111000010010000101100110]
(7)加入纠错码后,0对应001,1对应110,数据长度为1008比特
TextData=[0010011100011101101100011101100010011101100010011100011100010011100010010011101101101100010010010011101101101101101101101100011 1000100111000111011000111000111000111011000111000100100100100111011000 1110001001110110001110001001001110110110001110001001001001110001110001 0010011100011101100010011100010011101101101101100011101101101100011100 0100100100111011000100100111011000111011000100100111011000111000100111 0001110110001110001110110001001001001110110110110001001001110110110001 1100011100011101100010010010010011101101101100011100011101100010011101 1011011000100111011000111011011000100111011011000100111000100100100111 0001110001001001001110110110001001110110001110001110110110110001110110 0011101100011101100010010011101101100010010011101100011101101101100010 0100100100111000100111011011011000100100100111000111000100100111000100 1110001110110110110110001110110001001110001110110001110110110001001110 001110001110110110110110110110001110110110110110001001001001110001001110001001001001110001110110001001110110001]
(8)嵌入ModeFlag
在列扫描得到的第1-2两个分块中,嵌入添加纠错码后的ModeFlag=[110,110]
第1个分块的像素值平均值为163,模8余3,需要嵌入的是6,因此将整个分块的灰度值加3,得到新块的像素值平均值达到166,达到模8余3的状态。
第2个分块的像素值平均值为160,模8余0,需要嵌入的是6,因此将整个分块的灰度值加6,得到新块的像素值平均值达到166,达到模8余6的状态。
(9)嵌入CodeFlag
在列扫描得到的第3-4两个分块中,嵌入添加纠错码后的CodeFlag=[001,001]
第3个分块的像素值平均值为157,模8余5,需要嵌入的是1,因此将整个分块的灰度值减4,得到新块的像素值平均值达到153,达到模8余1的状态。
第4个分块的像素值平均值为155,模8余3,需要嵌入的是1,因此将整个分块的灰度值减2,得到新块的像素值平均值达到153,达到模8余1的状态。
(10)嵌入TextLength
在列扫描得到的第5-16共12个分块中,嵌入添加纠错码后的TextLegnth=[001001 001 001 001 001 110 001 110 001 110 001]
得到这些分块像素平均值模8的余数依次为:4,2,2,3,5,5,0,6,1,7,7,0。依次对每个分块的像素值进行-3,-1,-1,-2,-4,-4,+6,-5,+5,-6,-1,+1的操作。
(11)嵌入TextData
根据置换重排序的种子4138对剩余的L-4-k=18209个分块进行重新排列,排序居前的336个块作为负载。按照这样的重排列顺序,每个分块嵌入3比特信息,总计1008比特。每个块的修改按照图像分块修改策略进行修改,过程如同ModeFlag、CodeFlag、TextLength的嵌入。如图,将作为ModeFlag、CodeFlag、TextLength、TextData数据负载位置的小块用黑色标识出来,除了列扫描开始的16个小块集中分布在左上角之外,其他小块均匀散布在图像的其他位置。如图6所示。
(12)将修改后的图像仍然存储为JPG格式。
(13)当某用户得到含有隐蔽数据的图像时,一般情况下,默认选择常规提取方法。将分块按照列扫描顺序,从第1-2两个分块中获取像素均值依次为166,167,模8余数依次为6,7,分解成比特表示为[110 111],由于纠错码字不存在111,因此,在常规提取方法中,第二个分块无法提取到有效的ModeFlag,此时提示用户:“该图像不含隐蔽数据,或隐蔽数据被破坏,无法正确提取。”
(14)选择关键字段矫正提取方法。将分块按照列扫描顺序,从第1-2两个分块中获取像素均值依次为166,167,模8余数依次为6,7,分解成比特表示为[110 111],按照纠错码译码规则进行译码操作:对(001)或(000)或(010)的情况,则取比特0作为译码结果;对(110)或(101)或(111)的情况,则取比特1作为译码结果。得到ModeFlag=[11]。即获知该隐蔽数据采用容错加密模式。
(15)从第3-4两个分块中获取像素均值依次为153,158,模8余数依次为1,6,分解成比特表示为[001 110],按照纠错码译码规则进行译码操作:得到CodeFlag=[01]。即获知该隐蔽数据GBK码或自定义的文本编码方式。计算出嵌入容量为2276个字节,需要12个比特用于存储数据字节长度TextLength。
(16)从第5-16等12个分块中获取像素均值依次为
153 153 154 154 153 153 165 154 166 153 158 161
模8得到3比特码字:[001 001 010 010 001 001 101 010 110 001 110 001]
译码得到:TextLength=[0 0 0 0 0 0 1 0 1 0 1 0]
将TextLength转化为整数值等于42,这说明有42个字节的隐蔽数据。在GBK码(或自定义)编码和容错模式下,这42个字节的数据使用了42×8=336个分块进行存储。
(17)由于数据采用容错加密模式,因此要求用户输入口令,待用户输入正确的口令“一二三abc”后,计算密钥和置乱排序种子。在GB18030文本编码下,密钥长度不足10个字节,因此将这9字节对应的比特序列后面补8个零得到80比特的密钥:
[11010010101110111011011011111110110010001111110101100001011000100110001100000000]。
取CodeFlag和TextLength连接的二进制向量[0 1 0 0 0 0 0 0 1 0 1 0 1 0]对应的整数值4138作为置乱排序种子。
(18)根据置乱排序种子4138对列扫描得到的除前16个分块外的其他L-16=18209个分块进行排序,得到排序居前的336个分块的序号,将这些分块的像素均值计算出来,模8再进行二进制分解,得到比特序列。完成译码得到:
[001011101100110010100100011110000111111110100101101010110100000110100110100011101000010100010110010011111011110100001100011011000110100 1011010110000111100011101010110000011110101100111100110111001110010000 10100001110011010111101101101100011100011011110000010011110000101000100101111101100101101110010101111111011111000010010000101100110]
(19)使用trivium算法和密钥完成数据的解密,得到:
[1100100110100000111000011111001011110010111010011111011011100101101000001110100111101110101000001100001011100101111010011110101011101001 1110111011100111101000001110000111110100101000001011000110110000101110 1010110000101100001010000011101111111011101010000011001010111000011110111011110101111000011111001011111001101000001011000110101110]
若用户为输入自定义编码表,则使用GBK码编码得到错误的文本:蔂狎蜷鲥犻顮洛殛轭鐮狒牨昂鞍狅顮梳铛狎鶢碑。
若用户使用自定义编码表,则得到正确的文本:I arrive in Beijing at 10:00on January 1。
本实施例利用图片为载体传输用户的隐私信息。加密算法和自定义编码表可以保证,只有数据的嵌入者和可以共享密钥和编码表的其他被信任用户,才能得到该文本信息。此处读取JPG图像,嵌入信息,然后再次存储为JPG图像,这样的过程存在JPG重压缩操作,但是由于纠错码的使用,能够保障数据的正确恢复。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.兼容多类型图像载体的安全文本隐藏方法,其特征在于,包括:
步骤1:获取数字图像,将其转换到像素域得到其对应的像素值矩阵I;
步骤2:对所述像素值矩阵I进行图像分块,得到若干个图像块;
步骤3:确定待嵌入文本的编码类型和嵌入模式,并生成编码类型标识字段和嵌入模式标识字段;
步骤4:计算该编码类型和该嵌入模式下的嵌入容量;所述嵌入容量是指所述像素值矩阵I所能承载的文本占用的最大字节数;
步骤5:在该编码类型和该嵌入模式下对待嵌入文本进行编码,计算编码后文本的长度并生成文本长度标识字段;
步骤6:根据编码类型标识字段、嵌入模式标识字段、编码后文本和文本长度标识字段生成隐蔽数据;
步骤7:将隐蔽数据分配至对应的图像块;
步骤8:针对需要被嵌入隐蔽数据的图像块,根据该图像块的原始像素均值和其需要嵌入的隐蔽数据对该图像块进行修改,得到新的图像块;
步骤9:重复步骤8,直至所有需要被嵌入隐蔽数据的图像块均完成修改,此时将所有的图像块按照原图像格式进行存储,得到含有隐蔽数据的图像。
2.根据权利要求1所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,所述编码类型是指ASCII码、GBK码、GB18030码、UTF-8码和用户自定义编码的任意一种;
所述嵌入模式是指大容量模式、容错模式、大容量加密模式和容错加密模式中的任意一种;其中,大容量模式是指待嵌入文本不加密情况下,每个图像块负载3比特隐蔽数据;容错模式是指待嵌入文本不加密情况下,每个图像块负载1比特隐蔽数据和2比特校验;大容量加密模式是指待嵌入文本加密情况下,每个图像块负载3比特隐蔽数据;容错加密模式是指待嵌入文本加密情况下,每个图像块负载1比特隐蔽数据和2比特校验。
3.根据权利要求2所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,步骤4具体包括:
在大容量模式或者大容量加密模式下,若编码类型为ASCII码,则嵌入容量
Figure FDA0004152938720000011
若编码类型为其他类型,则嵌入容量/>
Figure FDA0004152938720000012
在容错模式或者容错加密模式下,若编码类型为ASCII码,则嵌入容量
Figure FDA0004152938720000021
若编码类型为其他类型,则嵌入容量/>
Figure FDA0004152938720000022
其中,L表示图像块的总数,f表示编码类型标识字段和嵌入模式标识字段两个字段所占用的图像块的个数,k表示用于文本长度标识字段所占用的图像块的个数。
4.根据权利要求3所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,步骤5中还包括:
获取用户口令并对待嵌入文本进行加密;对应地,在该编码类型和该嵌入模式下对加密后的待嵌入文本进行编码;所述用户口令采用GBK码所覆盖的字符。
5.根据权利要求4所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,采用流对称加密算法对待嵌入文本进行加密。
6.根据权利要求4所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,步骤7具体包括:
步骤7.1:按照逐列扫描顺序对所有图像块进行排序;
步骤7.2:使用前f+k个图像块来存储隐蔽数据的前3×(f+k)比特;
步骤7.3:设定伪随机数发生器的种子并生成伪随机数,所述伪随机数发生器是由梅森旋转算法构造的;
步骤7.3:按照生成伪随机数对剩余的L-f-k个图像块进行重新排序;
步骤7.4:按照每个图像块存储3比特数据的方式,依次使用在前的图像块来存储编码后的文本。
7.根据权利要求6所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,步骤7.3中,伪随机数发生器的种子的设定方式为:
若待嵌入文本在编码之前未进行加密,或者待嵌入文本在编码之前虽进行加密但所使用的用户口令的长度不超过设定的字节阈值,则采用编码类型字段和文本长度字段组成的二进制数对应的整数作为种子;
若待嵌入文本在编码之前进行了加密且所使用的用户口令的长度超过设定的字节阈值,则将用户口令超过设定的字节阈值之后的部分对应的整数作为种子。
8.根据权利要求1所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,步骤8具体包括:
步骤8.1:按照公式(1)计算图像块B(i,j)的原始像素平均值:
Figure FDA0004152938720000031
其中,round表示四舍五入取整运算,|B(i,j)|表示图像块B(i,j)中像素值的个数,i,j分别表示该图像块所在的行和列,i1,j1,t1分别表示图像块B(i,j)中像素所在的行、列和通道,I(i1,j1,t1)表示图像块B(i,j)中第i1行第j1列位置上、第t1个通道的像素值;
步骤8.2:将图像块B(i,j)需要嵌入的隐蔽数据转成一个取值范围位于0~7的整数d;
步骤8.3:比较d和(Imean)8是否相等,若相等,则不对图像块B(i,j)作修改,若不相等,则将原来的像素值I(i1,j1,t1)修改为新的像素值I(i1,j1,t1)′,即:I(i1,j1,t1)=I(i1,j1,t1)-(Imean)8+d;其中,(Imean)8表示Imean被8除所得的余数。
9.根据权利要求8所述的兼容多类型图像载体的安全文本隐藏方法,其特征在于,还包括:
步骤8.4:若新的像素值I(i1,j1,t1)大于255,则令I(i1,j1,t1)=255;若新的I(i1,j1,t1)小于0,则令I(i1,j1,t1)=0;
步骤8.5:返回执行步骤8.1重新计算得到Imean,并再次执行步骤8.3,若相等,则该图像块B(i,j)完成修改。
10.兼容多类型图像载体的安全文本提取方法,其特征在于,包括:
步骤1:读取含有隐蔽数据的图像;所述隐蔽数据是根据编码类型标识字段、嵌入模式标识字段、编码后文本和文本长度标识字段生成的;
步骤2:对图像进行分块,从所有图像块中确定编码类型标识字段和嵌入模式标识字段所在的图像块;并从图像块中读取所嵌入文本的编码类型和嵌入模式;
步骤3:计算该编码类型和该嵌入模式下的嵌入容量;所述嵌入容量是指所述像素值矩阵I所能承载的文本占用的最大字节数;
步骤4:根据所述嵌入容量计算得到文本长度标识字段所在的图像块,并从图像块中读取所嵌入文本的长度;
步骤5:根据所嵌入文本的长度计算得到所嵌入文本所在的图像块,并从图像块中读取编码后的所嵌入文本;
步骤6:根据编码类型对编码后的所嵌入文本进行解码,得到所嵌入文本。
CN202310324874.1A 2023-03-29 2023-03-29 兼容多类型图像载体的安全文本隐藏和提取方法 Pending CN116405191A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310324874.1A CN116405191A (zh) 2023-03-29 2023-03-29 兼容多类型图像载体的安全文本隐藏和提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310324874.1A CN116405191A (zh) 2023-03-29 2023-03-29 兼容多类型图像载体的安全文本隐藏和提取方法

Publications (1)

Publication Number Publication Date
CN116405191A true CN116405191A (zh) 2023-07-07

Family

ID=87019255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310324874.1A Pending CN116405191A (zh) 2023-03-29 2023-03-29 兼容多类型图像载体的安全文本隐藏和提取方法

Country Status (1)

Country Link
CN (1) CN116405191A (zh)

Similar Documents

Publication Publication Date Title
Saha et al. Steganographic techniques of data hiding using digital images
US7240209B2 (en) Methods of invisibly embedding and hiding data into soft-copy text documents
CN112202984B (zh) 一种基于纠错冗余的密文域可逆信息隐藏方法
Zhang et al. Efficient steganographic embedding by exploiting modification direction
Sutaone et al. Image based steganography using LSB insertion technique
CN103778590B (zh) 利用数字图像存储和传输信息的方法和装置
US20060242416A1 (en) Systems and methods for embedding messages in look-up tables
US7577845B2 (en) Information matrix cryptogram
Zhang et al. Dynamical running coding in digital steganography
Maiti et al. Data hiding in images using some efficient steganography techniques
Rawat et al. Steganography technique for hiding text information in color image using improved LSB method
US10008132B2 (en) Method and system for protecting data using steganography
Islam et al. Enhancing security of image steganography using visual cryptography
CN112054900A (zh) 一种密文域可逆信息隐藏方法及软硬件应用系统
CN114745475B (zh) 一种鲁棒的加密图像可逆信息隐藏方法
Singh et al. An efficient self-embedding fragile watermarking scheme for image authentication with two chances for recovery capability
US6023511A (en) Cryptosystem for encrypting digital image or voice file
Yu et al. A Novel Three‐Layer QR Code Based on Secret Sharing Scheme and Liner Code
Ahmad et al. Achieving Security for Images by LSB and MD5
CN116405191A (zh) 兼容多类型图像载体的安全文本隐藏和提取方法
Liang et al. Information hiding using whitespace technique in Microsoft word
CN115883744A (zh) 一种基于分数阶混沌映射的水印方法、装置和存储介质
Luo et al. Robust and progressive color image visual secret sharing cooperated with data hiding
Lavanya et al. Data hiding by means of color cryptography and optimum value transfer method
Jiang et al. A self-contained steganography combining LSB substitution with MSB matching

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination