第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何用二進(jìn)制代碼隱藏字符串?

如何用二進(jìn)制代碼隱藏字符串?

C++
慕妹3242003 2019-08-26 15:45:21
如何用二進(jìn)制代碼隱藏字符串?有時(shí),從二進(jìn)制(可執(zhí)行)文件中隱藏字符串很有用。例如,從二進(jìn)制文件中隱藏加密密鑰是有意義的。當(dāng)我說“隱藏”時(shí),我的意思是在編譯的二進(jìn)制文件中更難找到字符串。例如,這段代碼:const char* encryptionKey = "My strong encryption key";// Using the key編譯后生成一個(gè)可執(zhí)行文件,其數(shù)據(jù)部分中包含以下內(nèi)容:4D 79 20 73 74 72 6F 6E-67 20 65 6E 63 72 79 70   |My strong encryp|74 69 6F 6E 20 6B 65 79                           |tion key        |您可以看到我們的秘密字符串可以輕松找到和/或修改。我可以隱藏字符串......char encryptionKey[30];int n = 0;encryptionKey[n++] = 'M';encryptionKey[n++] = 'y';encryptionKey[n++] = ' ';encryptionKey[n++] = 's';encryptionKey[n++] = 't';encryptionKey[n++] = 'r';encryptionKey[n++] = 'o';encryptionKey[n++] = 'n';encryptionKey[n++] = 'g';encryptionKey[n++] = ' ';encryptionKey[n++] = 'e';encryptionKey[n++] = 'n';encryptionKey[n++] = 'c';encryptionKey[n++] = 'r';encryptionKey[n++] = 'y';encryptionKey[n++] = 'p';encryptionKey[n++] = 't';encryptionKey[n++] = 'i';encryptionKey[n++] = 'o';encryptionKey[n++] = 'n';encryptionKey[n++] = ' ';encryptionKey[n++] = 'k';encryptionKey[n++] = 'e';encryptionKey[n++] = 'y';......但這不是一個(gè)好方法。有更好的想法嗎?PS:我知道僅僅隱藏秘密并不能對(duì)付堅(jiān)定的攻擊者,但它總比沒有好......另外,我知道非對(duì)稱加密,但在這種情況下它是不可接受的。我正在重構(gòu)現(xiàn)有的應(yīng)用程序,它使用Blowfish加密并將加密數(shù)據(jù)傳遞給服務(wù)器(服務(wù)器使用相同的密鑰解密數(shù)據(jù))。我無法更改加密算法,因?yàn)槲倚枰峁┫蚝蠹嫒菪浴N疑踔翢o法更改加密密鑰。
查看完整描述

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):

  1. 將您的密鑰偽裝成通常出現(xiàn)在代碼中的字符串。 一個(gè)例子是printf()語句的格式字符串,它往往有數(shù)字,字母和標(biāo)點(diǎn)符號(hào)。

  2. 在啟動(dòng)時(shí)散列部分或全部代碼或數(shù)據(jù)段,并將其用作密鑰。(你需要對(duì)此有點(diǎn)聰明,以確保密鑰不會(huì)意外地改變?。┻@有一個(gè)潛在的副作用,即每次運(yùn)行時(shí)驗(yàn)證代碼的散列部分。

  3. 在運(yùn)行時(shí)從系統(tǒng)唯一的(并且在系統(tǒng)內(nèi)部)內(nèi)生成密鑰,例如,通過散列網(wǎng)絡(luò)適配器的MAC地址。

  4. 通過從其他數(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ù)。


查看完整回答
反對(duì) 回復(fù) 2019-08-26
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

  1. 將其作為代碼高爾夫問題發(fā)布

  2. 等待用J寫的解決方案

  3. 在您的應(yīng)用中嵌入J解釋器


查看完整回答
反對(duì) 回復(fù) 2019-08-26
  • 3 回答
  • 0 關(guān)注
  • 780 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)