SecretImageSharing

command module
v0.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2022 License: MIT Imports: 13 Imported by: 0

README

SecretImageSharing

2022春 网络信息安全 上机

Introduction

根据(r,n)门限方案,将一张图片分割成n个图片,取其中任意r张图片可以还原出原图片。

原理基本就是Shamir秘钥分享算法,通过拉格朗日插值法还原多项式系数。

  • 将图片运用黑白滤镜,变成灰度图片

  • 取原图中连续的r个像素点,作为多项式系数。

    (此处灰度范围为0-255,而其中最大质数为251,多项式应对251取模。这导致251-255的值不能使用,因此提出以下两种方案)

    • 将251-255灰度的像素有损处理为250灰度

    • 使用扩展位,用两位像素点表示一个251-255的灰度值。如:253表示为250+3,读到灰度为250的像素时,再去读下一个像素点,如果为3,则合并为253。

    (此处还有一个问题,解码时计算拉格朗日多项式系数时,高次系数为0时应当被舍弃,所以灰度0也不应当被使用,故在编码时对所有灰度值都加1)

  • 运用上述多项式可生成n个点(x,y),此处x作为图片序号,y作为黑白像素的Y值

  • 将上述n个点分别插入n张生成的图片中,最好可以使用伪装图片,把这个像素作为噪声插入图片中,但本程序不做伪装,只是连续的插入像素。

  • 解码时,用拉格朗日插值法,还原多项式系数。然后做上面的逆过程即可。

Quick Start

Usage of SecretImageSharing.exe:
  -n int
        N (default 5)
  -t int
        T (default 4)
  -tag
        time tag on decrypted image
> SecretImageSharing.exe C:\xxx\xxx.jpg
loaded jpeg image from C:\xxx\xxx.jpg
done

> SecretImageSharing.exe 1 3 4 5
loaded bmp image from image_1.bmp
loaded bmp image from image_3.bmp
loaded bmp image from image_4.bmp
loaded bmp image from image_5.bmp
done

原图: a.jpeg

黑白化原图: a.bmp

image_1.bmp: XUHLaS.md.png

image_2.bmp: XUHsF2.md.png

image_3.bmp: XUHP6l.md.png

image_4.bmp: XUH6G4.md.png

image_5.bmp: XUH4nf.md.png

数量不足的解码: XUnfgs.md.png

数量足够的解码:与原图一致

可以发现低次的图片加密效果并不好,所以可以多生成一些然后尽量选取高次的图片。或将加密的像素作为噪声插入伪装的图片中。

References

https://blog.csdn.net/z784561257/article/details/84424848

LIN, Pei-Yu; CHAN, Chi-Shiang. Invertible secret image sharing with steganography. Pattern Recognition Letters, 2010, 31.13: 1887-1893.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL