published on in Python

隐写术・文件隐写术

返回教程主页

上篇 隐写术・操作环境准备

维基百科: 隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganographia,该书书名源于希腊语,意为「隐秘书写」。

简易的文件隐写

我们可以使用Python的文件读写功能去实现最简单的文件隐写操作:

def concat(file1, file2, output):
    with open(output, 'wb') as of:
        with open(file1, 'rb') as rf:
            of.write(rf.read())
        with open(file2, 'rb') as rf:
            of.write(rf.read())

if __name__ == "__main__":
    import sys

    file1  = sys.argv[1]
    file2  = sys.argv[2]
    output = sys.argv[3]
    concat(file1, file2, output)
    print(f'{file1} + {file2} -> {output}')

可以将上述代码保存到本地,这里假设保存为文件concat.py

下面我们准备一张图片run.jpg和一个文本文件text.txt来进行实验:

为了把text.txt隐藏到run.jpg中,我们需要对text.txt进行打包,这里使用ZIP工具进行压缩打包得到text.zip:

然后我们在命令行中运行如下代码实现隐写操作:

python3 concat.py run.jpg text.zip out.jpg

如图,我们得到了一个名为out.jpg的图像文件,我们可以正常打开它;但是如果我们将其扩展名修改为.zip时会发现我们可以将其作为压缩包打开:

下篇 隐写术・图像处理