2011-07-19 13 views
7

Czy ktoś próbował odszyfrować pliki zaszyfrowane za pomocą Linux Encfs w Javie? Interesuje mnie odszyfrowanie pliku i tylko nazwa pliku (nie cały plik). Próbowałem:deszyfrowanie linux encfs (standardowa konfiguracja, 192 bitów aes) w Javie

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

mam encfs uruchomione z ustawieniami Dafault (tryb standardowy, 192-bitowe AES) oraz hasło powinno być "asdasd". Plik konfiguracyjny encfs że generuje to:

<?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> 

Czy ktoś próbował tego wcześniej i ma kod wskazuje na to?

Odpowiedz

3

This project wydaje się robić dokładnie to, o czym mówisz. Łatwo jest użyć interfejsu API:

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

Mam nadzieję, że to pomoże!

Powiązane problemy