如何知道rar文件是否通过使用Java的文件签名进行密码保护?

如何知道rar文件是否通过使用Java的文件签名进行密码保护?,java,rar,Java,Rar,有没有办法通过查看文件签名或Java中的任何其他方法来检查RAR文件是否受密码保护 我已经知道RAR文件签名是52 61 72 21 1A 07 00,但是我如何判断文件是否通过文件签名受到保护?或者您可以建议一种检测方法吗?以下是RAR文件格式规范: 看起来您需要一步一步地浏览这些头——使用头大小和头类型字段来指导您——直到到达“数据结束”头或“存档加密”头 这意味着遍历大部分文件。您可以通过使用memorympreader来避免仔细阅读您不感兴趣的字节,从而使磁盘上的文件能够很好地执行此操

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


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

以下是RAR文件格式规范:

看起来您需要一步一步地浏览这些头——使用头大小和头类型字段来指导您——直到到达“数据结束”头或“存档加密”头


这意味着遍历大部分文件。您可以通过使用
memorympreader
来避免仔细阅读您不感兴趣的字节,从而使磁盘上的文件能够很好地执行此操作。

您应该能够使用第三方库来完成此操作。这是一个流行的

使用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;
}
(我没有测试上述代码)