2015-04-05 63 views
0

我们可以通过以下方式隐藏图像中的rar/zip文件。这个概念被称为隐写术。使用Java从图像中提取隐藏文件

假设我想隐藏图像中的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的

回答

3

这不是真正的隐秘,因为你是不是隐藏图像在任何事情。您只是在文件末尾添加数据,并且如果以任何方式编辑图像,附加数据都会丢失。

某些(不是全部)归档人员可以找到“隐藏”数据的唯一原因是他们搜索整个文件以查找可能的归档。普通库例程不。他们期望档案从一开始就开始。

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

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

另外,速记正在写快速的手,隐写术是隐藏在另一个数据。

+0

隐写术是关于以隐藏的方式隐藏数据,以便某人不知道什么是隐藏起来的。在文件末尾追加数据仍被视为隐写术,即使它不会欺骗一些更有经验的人。还有许多隐写算法,如果载体文件被编辑和/或重新保存,隐藏的数据会遭受失真。像素lsb替换将图像保存为jpeg是一个很好的例子。还是隐写术,只是不健壮。 – Reti43 2015-04-05 09:53:02