3 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
正如對(duì)pavium 答案的評(píng)論所指出的,你有兩個(gè)選擇:
保護(hù)密鑰
保護(hù)解密算法
不幸的是,如果你必須求助于在代碼中嵌入密鑰和算法,那么這兩者都不是真正的秘密,所以你通過默默無聞的方式留下了(遠(yuǎn)遠(yuǎn)弱于)安全性的替代方案。換句話說,正如您所提到的,您需要一種聰明的方法來隱藏可執(zhí)行文件中的一個(gè)或兩個(gè)。
以下是一些選項(xiàng),但您需要記住,根據(jù)任何加密最佳實(shí)踐,這些選項(xiàng)都不是真正安全的,并且每個(gè)選項(xiàng)都有其缺點(diǎn):
將您的密鑰偽裝成通常出現(xiàn)在代碼中的字符串。 一個(gè)例子是
printf()
語句的格式字符串,它往往有數(shù)字,字母和標(biāo)點(diǎn)符號(hào)。在啟動(dòng)時(shí)散列部分或全部代碼或數(shù)據(jù)段,并將其用作密鑰。(你需要對(duì)此有點(diǎn)聰明,以確保密鑰不會(huì)意外地改變?。┻@有一個(gè)潛在的副作用,即每次運(yùn)行時(shí)驗(yàn)證代碼的散列部分。
在運(yùn)行時(shí)從系統(tǒng)唯一的(并且在系統(tǒng)內(nèi)部)內(nèi)生成密鑰,例如,通過散列網(wǎng)絡(luò)適配器的MAC地址。
通過從其他數(shù)據(jù)中選擇字節(jié)來創(chuàng)建密鑰。 如果你有靜態(tài)或全局?jǐn)?shù)據(jù),而不管類型(
int
,char
,等),它的初始化(為非零值,當(dāng)然)后,從什么地方采取一個(gè)字節(jié)每個(gè)變量中,并在改變之前。
請(qǐng)告訴我們您是如何解決問題的!
編輯: 您評(píng)論說您正在重構(gòu)現(xiàn)有代碼,因此我假設(shè)您不一定自己選擇密鑰。在這種情況下,請(qǐng)遵循兩個(gè)步驟:使用上述方法之一加密密鑰本身,然后使用該密鑰解密用戶的數(shù)據(jù)。
- 3 回答
- 0 關(guān)注
- 780 瀏覽
添加回答
舉報(bào)