2010-11-23 39 views
1

前段時間,在我的工作中,我需要保護一些類別以防其他人閱讀代碼。爲此,我創建了一個EncryptedClassLoader,它加載了以前加密的類,並且可以加載正常(未加密)的類。 以這種方式工作有點複雜,測試也是如此(編譯,然後加密,然後解密)。如何保護/加密你的Java類?

是否有任何自由的框架來做我需要的,並且容易處理?我的意思是,不僅混淆,而且加密文件,所以沒有人可以讀取或調試那部分代碼。我也可以很容易地更改加密密鑰(在我的應用程序中,它是硬編碼的)。

在此先感謝。

+7

對於每一個能有一個開罐器。如果該類可以在JVM中執行,則其內容可以通過某種方式獲得。考慮一個被破解的OpenJDK,它可以轉儲加載的類的內容,例如,作爲一個簡單的例子。 – 2010-11-23 14:35:45

+0

如果您的代碼非常好以至於需要加密,那麼您只需版權算法imho :) – 2010-11-23 14:39:01

回答

7

簡短的回答,你不能。加密不起作用。下面是關於爲什麼它是一個pointless to use an encrypted class loader文章老氣:

不幸的是,你就錯了, 都在想,你是 最先想出這個主意,並在 認爲它的實際工作。和 的原因與你的加密方案的強度無關。

您可以對其進行混淆處理,但這隻會到目前爲止,並且最終我堅信您的時間可以更好地用於修復錯誤或添加功能。

3

加密不會爲混淆添加太多安全性。任何能夠運行程序的人都可以將解碼後的字節碼轉儲到磁盤上。我假設這就是爲什麼加密字節碼不是很常見的情況,例如對它進行簽名。

如果你確實想加密你的字節碼,請確保你也混淆了它,我認爲你現在使用的方法在沒有添加任何框架或庫的情況下就可以正常工作。

1

我們使用JarProtector庫來加密我們的jar文件。沒有混淆,但只有加密。沒有選擇更改加密密鑰,但defineClass()永遠不會被調用。

0

你可以嘗試VLINX Java Protector,這使得通過修改JVM的本地類加載器來加密和解密類的數據,而不是用Java編寫的類加載器,可以有效保護您的Java代碼