我正在尝试破解Java中的encfs卷密钥。我使用标准设置(即192位加密)运行encfs。有没有办法做到这一点?
答案 0 :(得分:1)
这不是一个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)
然后,您需要使用明文值作为音量键的潜在候选者。显然,这是一个简化的解决方案,并做出许多假设;您需要更深入地研究这些卷密钥文件的格式以及构造加密副本时使用的算法,模式和填充。
祝你好运。答案 1 :(得分:1)
https://github.com/mrpdaemon/encfs-java上有一个Java库,提供了读取和读取功能。对encfs
文件系统的实验性写访问。