最近一段时间都在看隐写算法,F5算法算法比较经典的一个了,花了不少时间来琢磨,对于其中的矩阵编码方法终究是难以理解,找了很多资料,基本就是说了一下公式,不胜详略,难有一个能比较说的清楚的,这里分享一下我的看法,对之进行详细的说明。
关于F5隐写算法可以看论文:
F5—A Steganographic Algorithm High Capacity Despite Better Steganalysis
这里不再详细介绍
矩阵编码的基本思想:尽可能修改最少的位数来嵌入秘密信息,用(d,n,k)来表示,d为最多需要修改的位数,n为利用的比特数,k为嵌入信息的比特数,n = 2的k次方-1。在F5中只讨论d=1的情况;
这里简单介绍最多修改一位数据嵌入2bit信息的基本原理:
a1, a2 ,a3 为可改变位,x1,x2 为嵌入信息,
x1 = a1 ⊕a3 x2 = a2 ⊕a3 不做修改
x1 ≠ a1 ⊕a3 x2 = a2 ⊕a3 修改a1
x1 = a1 ⊕a3 x2 ≠ a2 ⊕a3 修改a2
x1 ≠ a1 ⊕a3 x2 ≠ a2 ⊕a3 修改a3
可以发现在a1, a2, a3三个比特位中嵌入x1,x2两个比特位信息最多只需要改变一个比特位数据。
下面介绍一般的情况(为了方便,直接盗图):
直接看貌似不