如何對純文本數據進行混淆,以便Java程序能夠對其進行反混淆處理很難進行反向工程?也就是說,應該沒有簡單的方法通過反編譯/分解程序的JVM代碼來弄清楚如何自己解密數據。以非反向工程方式加密Java程序的數據
我意識到如果一個壞人足夠堅決,這是不可能的。只是想盡可能地努力。
我唯一的想法是一個原生的擴展實現加密算法與存儲在一個古怪的方式,而不僅僅是一個簡單的字符串的密鑰。但真的喜歡避免本地擴展。
編輯
我極力用下來,並密切票反對。這是一個真正的問題。該應用程序被派遣給數千名高中的孩子。爲了加密數據,它目前使用代碼中嵌入的密鑰來實現RC4加密(使用Java)。聰明的孩子們可以反編譯這個,並使用反編譯來編寫讀取其他孩子數據文件的Java。這反過來允許各種形式的作弊。我們需要一個簡單而便宜的方法來更難推斷加擾算法。就這樣。我們不關心逆向工程這個80k線應用程序的其餘部分。實際上它是開源的。我們只需要保護執行數據解密的單一功能。
加密數據,並讓您的應用程序解密它。我不相信你*需要*本地擴展,但你可能想看看JCE Unlimited Strength JAR。 – Makoto 2014-09-30 01:36:13
一個非常昂貴的選擇是Excelsior JET,它將本質上將Java字節碼編譯成本機可執行文件(這使得它很難像C++應用程序那樣進行反向工程)。 – xpa1492 2014-09-30 01:56:25
這是尖叫的XY問題。你試圖讓不同用戶的信息彼此保密?使用非對稱加密。 – chrylis 2014-09-30 03:05:24