如何通过使用Java的文件签名来了解rar文件是否受密码保护?

时间:2017-03-22 16:40:02

标签: java rar

有没有办法通过查看文件签名或Java中的任何其他方法来检查RAR文件是否受密码保护?

我已经知道RAR文件签名是52 61 72 21 1A 07 00,但是如何通过文件签名来判断文件是否受到保护?或者你能建议一种方法来检测这个吗?

2 个答案:

答案 0 :(得分:0)

这是RAR文件格式规范:

http://www.rarlab.com/technote.htm#enchead

看起来您需要逐步浏览标题 - 使用标题大小和标题类型字段来指导您 - 直到您到达“数据结尾”标题或“存档加密”标题。

这意味着遍历大部分文件。您可以使用MemoryMapReader使磁盘上的文件合理地运行,以避免咀嚼您不感兴趣的字节。

答案 1 :(得分:0)

您应该可以使用第三方库完成此操作。 Junrar是一个受欢迎的。

使用Junrar,您可以编写如下内容:

public boolean isArchiveEncrypted(String pathToFile)
{
    try
    {
        Archive arch = new Archive(new File(pathToFile));
        return arch.isEncrypted();
    }
    catch (RarException e)
    {
        logger.error(e);
    }
    catch (IOException e)
    {
        logger.error(e);
    }
    return false;
}

(我还没有测试过上面的代码)