我的系統中有一個進程可以接收隨機純文本或密文輸入。由於性能是不是一個問題,我打算嘗試解密所有進入的輸入,用僞代碼是這樣的:Java Bouncy Castle在解密時總是拋出異常純文本
//get the input, either a plain text, or cipher text 'in disguise'
//ex of plain text: "some text".getBytes()
byte[] plainText = getInput();
try {
//try to decrypt whatever it is. Using Bouncy Castle as the AES crypto engine
plainText = AESDecryptor.decrypt(HARDCODED_AES_KEY, plainText);
} catch(Exception ex) {
...
}
//do some process with the plain text
process(plainText);
我使用AES的加密方法。
上面的代碼在很大程度上依賴於假設試圖使用彈性城堡來解密純文本將始終拋出異常。但是假設100%正確嗎?當嘗試解密普通的,人類可讀的文本時,它總是會拋出異常嗎?
在此先感謝!
謝謝你的回答。如果你不介意,我可以作爲參考的任何鏈接嗎? – riza
爲了清楚地識別有效的密文,我會在OCB或GCM模式下使用加密。 – Robert
@riza恐怕我沒有提及手;這個答案是基於我在應用程序安全領域工作的經驗。如果你在互聯網上研究填充,你會理解我的觀點。請注意,我也對BouncyCastle如何處理格式錯誤的填充做出了假設,但說實話,如果它不拋出異常(或返回'null'或其他),則不值得使用。 –