算法实现
II (a, b, c, d, M[ 4], 41, 0xf7537e82); II (d, a, b, c, M[11], 42, 0xbd3af235); II (c, d, a, b, M[ 2], 43, 0x2ad7d2bb); II (b, c, d, a, M[ 9], 44, 0xeb86d391);
(5)输出结果
最后再将a,b,c和d 还原为 A,B,C,和D,将ABCD组合起来,就构成原消息的摘要。
3.4 数字图像水印
为达到达到图像认证的目的,特引入易碎水印来实现。易碎水印对某些变换(如压缩)具有较低的鲁棒性,因而在所有的数字水印应用中,认证水印具有最低级别的鲁棒性要求。鉴于空间域LSB水印模型具有较低的鲁棒性,故本课题采用LSB算法。 3.4.1 位图的位面
在一幅用多比特值表示其灰度的图像来说,其中每个比特可看作表示了一个二值平面,也称作“位面”。1 幅灰度级用8 bit表示的图像有8个位面,一般用0代表最低位面,位面7代表最高位面。
正因为图像具有位面这种性质,在位图数字水印处理的算法中,因为水印往往隐藏在不为人视觉所察觉的位置,这样位面就提供了一种实施的很好方案。水印信息隐藏在这些看似噪声的位置进行处理,其对图像的破坏就不会太大,当然,在加入水印之前,首先要选择好信息具体加入的位面位置,不能将水印信息加入在存在图像视觉信息的位面上,因此,一般的LSB算法中,水印一般加在图像的后4 位。在图像中加入水印信息,最直接想到的方法就是直接修改图像像素的像素值,空间域水印算法就是基于这种思想的。 3.4.2 LSB算法模型
LSB算法采用直接改变图像中像素的最后一位bit值来嵌入水印信息。根据上一节提供的理论,我们可以看出,在图像的后四位嵌入水印信息,一般都不会对图像造成视觉上的影响。因此,后四位均是LSB数字水印的嵌入范围。嵌入水印的过程可以分为两个阶段,其分别为:嵌入过程、提取过程。就整体设计方案而言,可以用下面的模型来概括:
17
[7]
算法实现
原图:也就是原始图像,也是不含有水印信息的图像。 密图:指含有水印的图像。
水印:要嵌入到原始图片中的一段信息,可以是文字,也可以是图像。 水印的基本模型如图3-5所示。
原图 嵌入 密图 水印 图3-5 LSB 水印总体模型
提取 水印 3.4.3 LSB算法的实现
如果在一个256*256 大小的24位“py.bmp”中隐藏了一个文本文件“1.txt”。根据算法的原理,将信息嵌入到图像的最低位上,即每8个位中使用一个位来嵌入水印信息。所以,水印信息大小将可以最大为宿主文件的八分之一。那么,在该大小的位图中可最大可隐藏的字符数为256*256/8=8192个,约汉字4000多个。由此可见,在隐藏信息的容量非常大.算法具体如下:
1)嵌入水印信息
第一步:读入载体文件,并显示它;
第二步:决定载体的LSB 及嵌入的位数,采用嵌入图像中所有像素的最后一位;
第三步:对载体图像做预处理,置其LSB 为0; 第四步:将水印信息以ASCII 码的形式读入,并存储;
第五步:在每一个像素的第LSB 位上,存储水印信息的一个bit ; 第六步:显示嵌入水印信息的图像;
2) 读取水印信息
第一步:读入含有水印信息的图像; 第二步:得到每一个像素点的LSB 位;
第三步:由每 8 个LSB 位组成一个ASCII 还原水印信息; 第四步:将还原的信息进行重新组合,得到水印文件; 第五步:将水印信息显示出来;
这种算法的优点在于简单,方便,嵌入信息量大。但是,其缺点是鲁棒性不
18
算法实现
强,这也正是本课题所需[8]。 3.5 混合加密 3.5.1 DES算法
DES即数据加密标准,最初是IBM的W.Tuchman和C.Meyers等人提出的一个数据加密算法Lucifef,它于1976年被美国国家标准局正式用于商业和政府非要害信息的加密。DES是典型的加解密钥相同的对称密码体制,其优势在于加解密速度快、算法易实现、安全性好。目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在PQS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与PQS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。
DES是分组加密算法,它以64位(二进制)为一组对数据加密,64位明文输入,64位密文输出。密钥长度为 56位,但密钥通常表示为64位,并分为8组每组第8位作为奇偶校验位,以确保密钥的正确性。作
(1) 基于DES算法的数字图像加密
将DES算法用于数字图像加密,可以考虑将图像色彩的二维数据转化为一维数据,对一维数据按64比特为一组进行分组加密。
(2)DES算法概要
1)对输入的明文从右向左按顺序每64位分为一组(不足64位时在高位补0),并按组进行加密或解密。
2)进行初始置换。
3)将置换后的明文分成左右两组,每组32位。
4)进行16轮相同的变换,包括密钥变换,每轮变换如下图3-6所示。
19
算法实现
密钥(56位) Li?1(32位) Li?1(32位) 第6步 第4步 28位循环左移 28位循环右移 32位—48位 扩展置换 第7步 56位—48位 第5步 48位—32位 第8步 S盒代替 压缩置换 第9步 P盒置换 第10步 第11步 Li(32位) Ri(32位) 密钥(56位) 图3-6一轮DES 变换
(3)DES算法加密过程 1) 初始置换
初始置换就是对输入的64位二进制明文P=P1P2?P64 按照矩阵3-1的规则,改变明文P的顺序,矩阵中的数字代表明文在64位二进制序列中的位置。
20
算法实现
矩阵3-1初始置换
? 58 50 42 34 26 18 10 2 ??? 60 52 44 36 28 20 12 4 ??? 62 54 46 38 30 22 14 6 ??? 64 56 48 40 32 24 16 8 ?? ? 57 49 41 33 25 17 9 1 ???? 59 51 43 35 27 19 11 3 ?? 61 53 45 37 29 21 13 5 ????? 63 55 47 39 31 23 15 7 ??
初始置换矩阵中共有8行8列,共64个元素,其元素的排列是有规律的,可以把上面4行和下面4行分成2组,取名为L和R。
2) 明文分组
将置换后的明文,即新的64位二进制序列,按顺序分为左,右两组,每组都是32位。
3) 密钥置换
密钥置换就是按矩阵3-2的规则改变密钥的顺序。
矩阵3-2 密钥置换
? 57 49 41 33 25 17 9 ??? 1 58 50 42 34 26 18??? 10 2 59 51 43 35 27??? 19 11 3 60 52 44 36?? ? 63 55 47 39 31 23 15??? 7 62 54 46 38 20 22??? 14 6 54 46 45 37 29??? 21 13 5 28 20 12 4???? 密钥置换矩阵中共有8行7列,56 个元素。其元素的排列是有规律的,可以把上面4行和下面4行分为2组,取名为KL,KR,由于取消了原64位密钥中的奇偶校验位,在密钥置换矩阵3-2中就不会出现8,16,24,32,40,48,56,64这些数值了。
4) 密钥分组,移位,合并
将置换后的56位密钥按顺序分成左右两个部分KL,KR,每部分27位,根据DES算法轮数(迭代次数),分别将两个部分KL,KR地区循环左移1位或2位,每轮循环左移位数按照密钥移位个数表3-1选取。
21