diff --git a/README.md b/README.md index 1dd0907..82295c6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ encfs-java ========== -This branch contains a hack to cache decoded values better. -This is to use with encfs-brute. +I made the modifications for encfs-brute. The aim was + +1. to cache decoded values better, +2. no exception throwing if the key is incorrect. + +Those two items are important to improve speed. diff --git a/src/main/java/org/mrpdaemon/sec/encfs/EncFSPBKDF2Data.java b/src/main/java/org/mrpdaemon/sec/encfs/EncFSPBKDF2Data.java index 56d4aae..4578184 100644 --- a/src/main/java/org/mrpdaemon/sec/encfs/EncFSPBKDF2Data.java +++ b/src/main/java/org/mrpdaemon/sec/encfs/EncFSPBKDF2Data.java @@ -30,24 +30,24 @@ public class EncFSPBKDF2Data throws InvalidKeySpecException { byte[] cipherSaltData = config.getSaltData(); - int keySizeInBytes = config.getConfig().getVolumeKeySizeInBits() / 8; + int keySizeInBits = config.getConfig().getVolumeKeySizeInBits(); KeySpec ks = new PBEKeySpec(password.toCharArray(), cipherSaltData, config.getConfig().getIterationForPasswordKeyDerivationCount(), - (keySizeInBytes + EncFSVolume.IV_LENGTH_IN_BYTES) * 8 + keySizeInBits + EncFSVolume.IV_LENGTH_IN_BYTES * 8 ); byte[] pbkdf2Data = skf.generateSecret(ks).getEncoded(); EncFSPBKDF2Data obj; - obj = EncFSPBKDF2Data.from(config, pbkdf2Data); + obj = EncFSPBKDF2Data.from(config.getConfig(), pbkdf2Data); obj.password = password; return obj; } - public static EncFSPBKDF2Data from(EncFSBinaryConfig config, byte[] pbkdf2Data) + public static EncFSPBKDF2Data from(EncFSConfig config, byte[] pbkdf2Data) throws InvalidKeySpecException { EncFSPBKDF2Data obj = new EncFSPBKDF2Data(); - int keySizeInBytes = config.getConfig().getVolumeKeySizeInBits() / 8; + int keySizeInBytes = config.getVolumeKeySizeInBits() / 8; obj.pbkdf2Data = pbkdf2Data; obj.passKeyData = Arrays.copyOfRange(pbkdf2Data, 0, keySizeInBytes); obj.passIvData = Arrays.copyOfRange(pbkdf2Data, keySizeInBytes, diff --git a/src/main/java/org/mrpdaemon/sec/encfs/VolumeKey.java b/src/main/java/org/mrpdaemon/sec/encfs/VolumeKey.java index 6f24bda..8752414 100644 --- a/src/main/java/org/mrpdaemon/sec/encfs/VolumeKey.java +++ b/src/main/java/org/mrpdaemon/sec/encfs/VolumeKey.java @@ -76,7 +76,7 @@ class VolumeKey { EncFSPBKDF2Data pbkdf2DataObj; try { binaryConfig = EncFSBinaryConfig.from(config); - pbkdf2DataObj = EncFSPBKDF2Data.from(binaryConfig, pbkdf2Data); + pbkdf2DataObj = EncFSPBKDF2Data.from(config, pbkdf2Data); } catch (Exception e) { throw new EncFSInvalidConfigException(e); } @@ -212,7 +212,7 @@ class VolumeKey { config.setBase64EncodedVolumeKey(EncFSBase64.encodeBytes(encodedVolKey)); } - private static class DecryptInfo { + protected static class DecryptInfo { byte[] clearVolKeyData; Mac mac; }