在Java中解密Linux Encfs(标准配置,192位AES)

7

有人尝试使用Java解密使用Linux encfs加密的文件吗?我想解密文件,只需要文件名(不需要整个文件)。我尝试了:

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

我正在使用默认设置(标准模式,192位AES)运行encfs,并且密码应为“asdasd”。Encfs生成的配置文件如下:

<?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>
有人之前尝试过这个并且有代码可以展示吗?
1个回答

3
这个项目似乎正是你所说的。它看起来很容易使用API:这里
EncFSVolume encFSVolume = new EncFSVolume("<path>", "password");

希望这能帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接