2011-07-19 44 views

回答

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) 

你會那麼就需要使用明文值作爲音量鍵的潛在候選。顯然,這是一個簡化的解決方案,並做出了許多假設;您需要更深入地研究這些音量密鑰文件的格式以及構建加密副本時使用的算法,模式和填充。

祝你好運。