我正在编写一个图像加密程序,其中我在图像中编码一个字符串。
我正在处理.png
图像。
编码通过以下步骤执行:
- 使用 getRGB() 将图像的像素存储在 2D 数组中。
- 字符串中的每个字符都被转换为二进制形式并存储在一个数组中。
- 像素的每个字节的 LSB
4byte
根据字符的二进制形式的每一位而改变。第一个字节的 LSB 在第 0 位,第二个字节的 LSB 在第 8 位,第三个字节在第 16 位,第四个字节在第 24 位。 - 编码后,使用 setRGB() 方法将修改后的像素写入原始图像。
对于解码:
- 使用 getRGB() 读取图像的像素;
- 使用反向编码方法来检索数据。
在每 8 位之后,包含解码位的 int 被转换为字符。然后为另一个字符初始化为零。
if((pixels[i][j] & change)==1) { tempText|=1 ; } tempText<<=1;
变化为 1,256,65536,16777216,具体取决于迭代。第 0、8、16 和 24 位为 1。
代码编译得很好。但解码后,我在输出中得到奇怪的 ascii 字符。我找不到原因。所以我在这里咨询专家。