2017-03-22 3 views

Répondre

0

est ici la spécification de format de fichier RAR:

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

Il semble que vous devrez parcourir les en-têtes - en utilisant les champs de taille d'en-tête et le type d'en-tête pour vous guider - jusqu'à ce que vous atteigniez l'en-tête "fin de données" ou un en-tête "chiffrement d'archive".

Cela signifie parcourir la plus grande partie du fichier. Vous pouvez faire en sorte que cela fonctionne raisonnablement bien pour un fichier sur le disque en utilisant MemoryMapReader pour éviter de mastiquer les octets qui ne vous intéressent pas.

0

Vous devriez pouvoir accomplir cela avec une bibliothèque tierce. Junrar est un populaire.

En utilisant Junrar vous pourriez écrire quelque chose comme:

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; 
} 

(je n'ai pas testé le code ci-dessus)