2011-07-19 10 views
7

¿Alguien ha intentado descifrar archivos cifrados utilizando linux encfs en Java? Estoy interesado en descifrar el archivo, y solo el nombre del archivo (no el archivo completo). He intentado:descifrando linux encfs (configuración estándar, 192 bits aes) en Java

SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); 
//SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithMD5AndAES"); 
KeySpec spec = new PBEKeySpec("asdasd".toCharArray(), new String("Ip/6nf5p4Cvg4uocLdIeHJ7uW/Y=").getBytes(), 162752, 192); 
SecretKey tmp = factory.generateSecret(spec); 
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES"); 
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
cipher.init(Cipher.DECRYPT_MODE, secret); 

tengo encfs que se ejecutan con la configuración dafault (modo estándar, 192 bit AES) y la contraseña debe ser "asdasd". El archivo de configuración que genera encfs es:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
    <!DOCTYPE boost_serialization> 
    <boost_serialization signature="serialization::archive" version="7"> 
    <config class_id="0" tracking_level="1" version="20" object_id="_0"> 
<version>20100713</version> 
<creator>EncFS 1.6</creator> 
<cipherAlg class_id="1" tracking_level="0" version="0"> 
    <name>ssl/aes</name> 
    <major>2</major> 
    <minor>2</minor> 
</cipherAlg> 
<nameAlg> 
    <name>nameio/block</name> 
    <major>3</major> 
    <minor>0</minor> 
</nameAlg> 
<keySize>192</keySize> 
<blockSize>1024</blockSize> 
<uniqueIV>1</uniqueIV> 
<chainedNameIV>1</chainedNameIV> 
<externalIVChaining>0</externalIVChaining> 
<blockMACBytes>0</blockMACBytes> 
<blockMACRandBytes>0</blockMACRandBytes> 
<allowHoles>1</allowHoles> 
<encodedKeySize>44</encodedKeySize> 
<encodedKeyData> 
    SFGMGDJNNROM/b+sMMlM24DxUsKW80Sen/IFaP849qqqPjy1jP1iiWB8eGB= 
</encodedKeyData> 
<saltLen>20</saltLen> 
<saltData> 
    qjGF2+ngKRPJ2zkx8dMw/Rv0nxg= 
</saltData> 
<kdfIterations>156293</kdfIterations> 
<desiredKDFDuration>500</desiredKDFDuration> 
    </config> 
    </boost_serialization> 

Alguien ha intentado esto antes y tiene el código para mostrar?

Respuesta

3

This project parece hacer exactamente de lo que está hablando. Parece bastante fácil utilizar el API:

EncFSVolume encFSVolume = new EncFSVolume("<path>", "password"); 

Espero que esto ayude!

Cuestiones relacionadas