【发布时间】:2014-01-20 12:07:16
【问题描述】:
我正在开发一个 php 脚本,它对给定的文本进行编码并使用 LSB 将其隐藏在图像中。但是编码的文本是一个字节数组(使用 mcrypt 和 rijndael-256 加密的文本,然后用 unpack("C*", $encryptedText); 解包)我有 tp 在数组的开头添加数组大小。如果我不这样做,以后再次从图像中读取字节会很糟糕,因为脚本不知道在哪里停止读取。我使用这些代码行在数组的开头添加了大小信息:
$size = count($byteArray);
array_unshift($byteArray, $size >> 24, ($size & 0xff0000) >> 16, ($size & 0xff00) >> 8, $size & 0xff);
所以大小以整数格式(4字节)添加,但现在创建的每个图像都具有第一个隐藏字节主要以零开头的特征,因为$size大多在60000或更低的范围内。有什么办法可以编码大小或更改程序的其他部分,使其正常工作,并且字节的开头每次都几乎不一样?
【问题讨论】:
-
您能指定“大部分为 60000 或更低”吗?如果它每次都低于 60000 (65536),即 4 个字节中有 2 个字节,则可以只用随机数填充另外 2 个字节。
-
对不起,我没有提到。 size 是用户提交的文本的大小。在大多数情况下,它肯定会远低于 60000 个字符,但如果用户想要 tp 加密更大的文本,它也可能超过 1000000 个。但是在实际内容之前添加一些随机数是一个非常好的主意。非常感谢。
标签: php gd steganography