在Java中解密encfs音量键
我试图破译Java中的encfs卷密钥。 我用标准设置运行encfs(即192位aes加密)。 有没有办法做到这一点?
这不是真正的Java问题,更多的是密码学问题。 对EncFS的简要调查表明,音量密钥是由用户密码派生的密钥加密的。 这很可能代表了最好的攻击媒介:一种对希望是弱密码的强力攻击。 然而,我不会抱太大的希望。
对于它的价值, javax.crypto
的Java JCE类将是您在Java中执行对称加密的途径。 以下代码片段显示了如何使用明文密钥执行一些AES解密:
byte[] keyBytes = ...
byte[] volumeKeyFileContents = ...
SecretKeyFactory factory = SecretKeyFactory.getInstance("AES");
SecretKey aesKey = factory.generateSecret(new SecretKeySpec(keyBytes, "AES"));
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); // for example
cipher.init(Cipher.DECRYPT_MODE, aesKey);
byte[] plaintext = cipher.doFinal(volumeKeyFileContents);
// (written from memory so may not compile without tweaks)
然后您需要使用明文值作为音量键的潜在候选者。 显然,这是一个简化的解决方案,并做出了许多假设; 您需要更深入地研究这些音量密钥文件的格式以及构建加密副本时使用的算法,模式和填充。
祝你好运。
https://github.com/mrpdaemon/encfs-java上有一个Java库,它提供对encfs
文件系统的读取和实验性写入访问。
上一篇: decipher encfs volume key in java
下一篇: java.security.InvalidKeyException: Key length not 128/192/256 bits