我正在研究一個(gè)java客戶端/服務(wù)器應(yīng)用程序。每個(gè)用戶必須能夠通過客戶端應(yīng)用程序(用數(shù)字簽名標(biāo)記它們)或手動(dòng)創(chuàng)建和修改文件(包含一些敏感數(shù)據(jù))(標(biāo)記錯(cuò)誤簽名的可能性為99.99999%)。簽名不使用客戶端標(biāo)識(shí),只使用文件的內(nèi)容,這意味著創(chuàng)建完全相同文件的兩個(gè)遠(yuǎn)程客戶端將最終得到兩個(gè)具有完全相同簽名的文件。在做了利弊后,我最終考慮使用混淆來防止惡意用戶,而不是使用逆向工程來找到為給定文件提供數(shù)字簽名的算法。但是,如果我理解正確,混淆會(huì)使代碼難以為人類閱讀,更難理解,但我的目標(biāo)更多是將算法隱藏在數(shù)字簽名背后。關(guān)于如何制作它的任何想法:難以閱讀?很難找到?目前我的想法是:使用非常隨意的名字和一些無用的治療方法將它放在一個(gè)隨機(jī)的隨機(jī)類中,并使用來自隨機(jī)位置的東西刪除評(píng)論隨機(jī)化另外,我不確定如何編譯和逆向工程。當(dāng)編譯代碼時(shí),我曾經(jīng)認(rèn)為變量在“ 方法區(qū)域 ”中被昵稱,并且逆向工程將為我們提供一個(gè)代碼,其中包含名為a,b,c等的變量。但它似乎不是現(xiàn)在我考慮它是有道理的,因?yàn)樵趈ava中可以進(jìn)行反射,我是否在最后一部分?總而言之,我不確定這將如何阻止用戶反轉(zhuǎn)我的代碼(變量名稱的部分除外)。
2 回答

精慕HU
TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
讓我們澄清一下你對(duì)混淆的誤解:
你不這樣做對(duì)你的源代碼。在java世界中,如果你混淆了二進(jìn)制傳遞,換句話說:你的類文件?;蛘叽_切地說:它主要是關(guān)于類文件混淆,有源代碼混淆的商業(yè)工具。
混淆仍然在Android領(lǐng)域內(nèi)使用,但“純粹”的java商店,這些天很少使用
最重要的是:“默默無聞的安全”很少奏效。
如果您真的非常認(rèn)真地在客戶端(無法控制它)運(yùn)行代碼,那么最好在本機(jī)代碼中執(zhí)行該部分,并為該部分提供機(jī)器編譯的二進(jìn)制文件。
添加回答
舉報(bào)
0/150
提交
取消