# 基于SM4和LSB算法实现图片数字水印加密项目 **Repository Path**: xmasker/mms ## Basic Information - **Project Name**: 基于SM4和LSB算法实现图片数字水印加密项目 - **Description**: 密码赛和星火杯时做的小项目,密码赛的时候是个半成品,没有进决赛,星火杯之前完善了,并取得了星火杯二等奖 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2022-04-01 - **Last Updated**: 2024-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: sm4, 图片数字水印 ## README # mms #### 介绍 密码赛和星火杯时做的小项目,密码赛的时候是个半成品,没有进决赛,星火杯之前完善了,并取得了星火杯二等奖 基于SM4和数字水印做了一个图片数字水印加密(水印图片尺寸以及SM4的密钥是私钥),数字水印技术将水印信息扩散到载体图片中,而且这种改变是肉眼不可见的。通过对水印图片的鉴定可以判断出载体图片的版权来源以及图片是否受到篡改。但是由于传统LSB数字水印技术容易受到反解攻击,因此我们先在载体图片像素点最低位添加噪声,然后对水印图片信息进行SM4加密后嵌入载体图片。这样可使水印信息充分混淆无序,失去相邻像素点间相关性统计特性,从而可以有效抗反解攻击,从而达到对水印信息机密性和完整性的保护。 #### 使用说明 1. 使用encrypto中的CallFirstMainWin.py打开数字水印加密主界面 2. 使用encrypto中的CallFirstMainWin.py打开数字水印加密主界面 3. 根据界面提示选择图片的路径 **(目前设定图片必须为.bmp格式)** 4. 选择SM4密码,SM4密码需为32位十六进制(因为SM4是分组密码,分组长度为128位) 5. 使用decrypto中的CallFirstMainWin.py打开数字水印解密主界面 6. 同理进行解密 #### 一种可能的应用场景 - A拥有一张原始图片Z0 - B拥有带正版水印的图片Z1 - C拥有一张盗版图片Z2 - D拥有一张经过篡改的图片Z3 - 正版水印是版权机构分发给Z0拥有者A的加密水印图片C - 当发生版权纠纷时,版权鉴定机构会分别从Z1,Z2,Z3中提取水印,分别与C比对,结果只有Z1与C是一致的,因此很容易得到B拥有的合法的正版作品,而C和D拥有的都是盗版或被篡改的作品。而攻击者并不能通过统计特性等方法反解水印达到伪造的目的