这个是当时参加密码学竞赛的一个作品,主要想法是将rsa的公钥和私钥藏进图片里面,
程序主要代码链接:https://pan.baidu.com/s/1AIDpIAtQqMRfg59lWFFQiQ
提取码:lwv4
主要思路如下,鉴于图片有3个信道,每个信道的值是0-255,其实可以把信息嵌入其中。先说下解码方式,对于图片,以3乘3的卷积方式读取图片的其中一个信道,对3乘3内9个数值进行取余64后再取最大值的操作,然后将这个“卷积,取余,取最大值”得到的数值映射到base64编码上去,最终从图片提取一串base64编码的字符串,对其进行解码即可得到该图片中被嵌入的信息。加密方式即是上述过程反过来,首先确定每个3乘3区域需要嵌入的字符,然后将其映射到0-63这个数字区间上,然后对3乘3中的数字进行随机增减操作,只要确保3乘3内的9个数值,经过“取余64后”,9个数中的最大值是嵌入字符的数字映射即可。
这个想法主要是因为当时在学习深度学习的卷积网络部分,所以就使用了这种类似卷积的方法来嵌入信息,现在看来这种嵌入方式还是有许多不足之处,如因为在图片的一个信道里嵌入信息,整个图片会显得偏蓝或偏黄,让人很容易就看破是在信道里动了手脚。此外,这种编码方式的鲁棒性也很差,必须以png形式传递图片,一旦图片被压缩,放大就无法从图片中还原出正确信息。
现在在来看的话,我想可以从二维码这个方向入手,如二维码即使有一定偏差也可以扫描出来,且之后的变种椭圆形二维码也表明这种图片保存信息的方式有极高的鲁棒性。