0

我们可以通过以下方式将 rar/zip 文件隐藏在图像中。这个概念被称为隐写术。

假设我想在图像中隐藏 rar 文件,我将在 Windows 命令提示符下编写此命令

copy /b image.jpg+as.zip hidden.jpg

现在要取回内容,我们可以使用 Winrar/7zip 或任何其他实用程序打开 hidden.jpg,它将显示其所有内容

现在要读取一个 zip 文件,我正在使用这个 java 代码

try{
            File file=new File(name);
            ZipFile zipFile=new ZipFile(file);
            Enumeration<? extends ZipEntry>enumeration=zipFile.entries();

            System.out.println("Listing Entries in the zipfile");
            while(enumeration.hasMoreElements()){
                Object key=enumeration.nextElement();
                System.out.println(key.toString()+":"+zipFile.getEntry(key.toString()));
            }

            zipFile.close();
        }catch(Exception e){
            System.out.println(e.toString());
        }

此代码适用于普通 zip 文件/但是当我尝试使用此代码打开“hidden.jpg”文件时会导致错误。我也用 Apache Common Compress Library 进行了同样的测试。谁能指出我如何在 Java 中做到这一点?

我相信这是可以做到的,因为我们可以使用 WinRar 等工具查看隐藏文件

4

1 回答 1

3

这不是真正的隐写术,因为您没有在图像中隐藏任何内容。您只是在文件末尾添加数据,如果以任何方式编辑图像,附加数据就会丢失。

一些(不是全部)归档器可以找到“隐藏”数据的唯一原因是因为他们搜索整个文件以寻找可能的归档。正常的库例程没有。他们希望存档从头开始。

所以如果你想打开存档,你必须找到起始位置。这可以通过打开图像文件并确定其大小,或者只是自己搜索存档的开头来实现。

但正如我所说,这不是隐写术,图像中没有隐藏任何内容。

此外,速记是快速书写,隐写术是将数据隐藏在另一个里面。

于 2015-04-05T07:19:43.333 回答