首页 > 编程知识 正文

lsb替换算法原理,lsb算法嵌入水印

时间:2023-05-05 13:43:56 阅读:134540 作者:3150

用LSB算法加密数据:(自己随便找)

加密前的图片:自己随便找

加密图像:自行编码生成

加密代码: frompilimportimagedefget _ key (strr ) :tmp=strrf=open ) tmp,' rb ' ) str=''s=f.read(forIinrange ) '').zfill(8) #str=str ' ' f.close ) ) #print ) str ) returnstrdeffunc ) str2,str2, str3) 3360im=image.open(str1) width=im.size [0] height=im.size [1] print (width 3360 ) str ) width ) key len ) key,8 ) :#stra=int ) key ) I3360I8),2 )打印(chr (stra ) (keylen=len ) key ) keylen ) key ) keylen ) count ) I height ) 3360forwinrange ) 0 h ) a=pixel [0] b=pixel [1] c=pixel [2] if count==keylen : breaka=a-a %2int (2) h )、a、b、c ) ) breakb=B-b%2int ) key[count] ) count=1iii h () a、b、c ) ) breakc=c-c%2int ) key[count] h ) ) a c ) if count==keylen : break im.save (str3) old='D:课程电子商务安全LSB图片. jpg'new='D: 是个简单的java小程序。 是别人写的。 )

解码代码: frompilimportimagedeffunc(le,str1, str2) 3360a=''b=''im=image.open(str1) length=le *8width=im.size [0] height=im.size [1] count=width ) :pixel=im.getpixel ),h ) b=bstr(int(pixel[count%3] )2) if count==length 3360 break count=1b if count==length : break count=1b=bstr (int (pixel [ count %3] ) % 2) ) if count==length : break count=1if count print(b ) message=''forIinrange(0,len ) b ),8 ) :stra=int(b[I:I8],2 ) message=chr(stra ) print 图_LSB.png'message='D:课程电子商务安全 LSBmessage.txt ' func (le,new,message )与加密相同

反思与总结:加密使用LSB算法,使用png、bmp等格式,对jpg格式的图像进行加密后仍保存为jpg格式时,图像在处理过程中会被压缩,信息会丢失。

以前我误以为代码逻辑是错误的,但我发现生成的图像格式是错误的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。