Compare commits

..

2 commits

Author SHA1 Message Date
e63300e3a2 Dirty hack to cache decoded values better 2015-11-09 15:40:46 +01:00
9d452a6ba2 Update branch README 2015-11-09 15:40:35 +01:00
3 changed files with 13 additions and 9 deletions

View file

@ -1,5 +1,9 @@
encfs-java encfs-java
========== ==========
This branch contains a hack to cache decoded values better. I made the modifications for encfs-brute. The aim was
This is to use with encfs-brute.
1. to cache decoded values better,
2. no exception throwing if the key is incorrect.
Those two items are important to improve speed.

View file

@ -30,24 +30,24 @@ public class EncFSPBKDF2Data
throws InvalidKeySpecException throws InvalidKeySpecException
{ {
byte[] cipherSaltData = config.getSaltData(); byte[] cipherSaltData = config.getSaltData();
int keySizeInBytes = config.getConfig().getVolumeKeySizeInBits() / 8; int keySizeInBits = config.getConfig().getVolumeKeySizeInBits();
KeySpec ks = new PBEKeySpec(password.toCharArray(), cipherSaltData, KeySpec ks = new PBEKeySpec(password.toCharArray(), cipherSaltData,
config.getConfig().getIterationForPasswordKeyDerivationCount(), config.getConfig().getIterationForPasswordKeyDerivationCount(),
(keySizeInBytes + EncFSVolume.IV_LENGTH_IN_BYTES) * 8 keySizeInBits + EncFSVolume.IV_LENGTH_IN_BYTES * 8
); );
byte[] pbkdf2Data = skf.generateSecret(ks).getEncoded(); byte[] pbkdf2Data = skf.generateSecret(ks).getEncoded();
EncFSPBKDF2Data obj; EncFSPBKDF2Data obj;
obj = EncFSPBKDF2Data.from(config, pbkdf2Data); obj = EncFSPBKDF2Data.from(config.getConfig(), pbkdf2Data);
obj.password = password; obj.password = password;
return obj; return obj;
} }
public static EncFSPBKDF2Data from(EncFSBinaryConfig config, byte[] pbkdf2Data) public static EncFSPBKDF2Data from(EncFSConfig config, byte[] pbkdf2Data)
throws InvalidKeySpecException throws InvalidKeySpecException
{ {
EncFSPBKDF2Data obj = new EncFSPBKDF2Data(); EncFSPBKDF2Data obj = new EncFSPBKDF2Data();
int keySizeInBytes = config.getConfig().getVolumeKeySizeInBits() / 8; int keySizeInBytes = config.getVolumeKeySizeInBits() / 8;
obj.pbkdf2Data = pbkdf2Data; obj.pbkdf2Data = pbkdf2Data;
obj.passKeyData = Arrays.copyOfRange(pbkdf2Data, 0, keySizeInBytes); obj.passKeyData = Arrays.copyOfRange(pbkdf2Data, 0, keySizeInBytes);
obj.passIvData = Arrays.copyOfRange(pbkdf2Data, keySizeInBytes, obj.passIvData = Arrays.copyOfRange(pbkdf2Data, keySizeInBytes,

View file

@ -76,7 +76,7 @@ class VolumeKey {
EncFSPBKDF2Data pbkdf2DataObj; EncFSPBKDF2Data pbkdf2DataObj;
try { try {
binaryConfig = EncFSBinaryConfig.from(config); binaryConfig = EncFSBinaryConfig.from(config);
pbkdf2DataObj = EncFSPBKDF2Data.from(binaryConfig, pbkdf2Data); pbkdf2DataObj = EncFSPBKDF2Data.from(config, pbkdf2Data);
} catch (Exception e) { } catch (Exception e) {
throw new EncFSInvalidConfigException(e); throw new EncFSInvalidConfigException(e);
} }
@ -212,7 +212,7 @@ class VolumeKey {
config.setBase64EncodedVolumeKey(EncFSBase64.encodeBytes(encodedVolKey)); config.setBase64EncodedVolumeKey(EncFSBase64.encodeBytes(encodedVolKey));
} }
private static class DecryptInfo { protected static class DecryptInfo {
byte[] clearVolKeyData; byte[] clearVolKeyData;
Mac mac; Mac mac;
} }