Password-Based-Encryption
充氣城堡和莎莎 20
我想在 Java 中使用 Salsa 20,所以我下載了 Bouncy Castle,然後……這對我來說毫無意義。我已經讓它工作了,但我的大多數選擇基本上都是隨機的。但我看不出有什麼東西可以引導我走上正確的道路。該界面
CipherParameters
幾乎可以接受任何廢話,並且 257 位的密鑰大小可以完美執行。private static StreamCipher newCipher(byte[] password, byte[] salt) { int iterations = 50000; // really? PBEParametersGenerator generator = new PKCS5S2ParametersGenerator(); // really this one? generator.init(password, salt, iterations); Arrays.fill(password, (byte) 0); final CipherParameters cipherParameters = generator.generateDerivedParameters(256, 64); // would 257 be better? :D final StreamCipher result = new Salsa20Engine(); result.init(true, cipherParameters); }
正如我所寫,它有效,但這是正確的方法嗎?尤其,
- 50000次迭代的PKCS5S2是個不錯的選擇嗎?
- 密碼無處儲存,所以我假設,唯一的執行緒是攻擊者可以同時訪問明文和密文,將它們異或在一起,並使用它來驗證他們的密碼猜測。我對嗎?
- 關於實際的 POV,有沒有辦法驗證我沒有做任何嚴重的錯誤(例如切換密碼和鹽或使用不適當的方法)?
我上面的程式碼是一個迷人的巨大阻尼堆……你知道的。
generator.init(password, salt, iterations); Arrays.fill(password, (byte) 0);
BC 無法複製
password
數組的內容,因此我在使用後清除密碼的安全性“改進”,在使用**前清除它並導緻密碼全為零。順便說一句,郵件列表並不比這個網站好。沒有答案。