講師回答 / 馬超老師
同學(xué)您好,這個就屬于進(jìn)階課程的內(nèi)容了,簡單說可以通過動態(tài)鏈接庫或者Framework來解決。首先要清楚我們加密的目的不是讓其他人無法破解,而是通過使用盡可能低的成本來最大程度提高破解門檻;然后對于Java/Kotlin以及OC/Swift而言,逆向是非常簡單的事情,所以我們認(rèn)為破解難度低;基于此最簡單的操作就是將涉密代碼,包括同學(xué)提到的密鑰等常量通過C/C++等Native語言編寫,以so/framework的形式打包到安裝包中,這樣我們的開發(fā)成本并不會高很多,但是對于C的逆向門檻要求會比較高,這是最常見...
2020-04-10
1-客戶端通過RSA算法(DH得到公鑰、RsaPubKey)得到加密的handShake-》握手
* 2-服務(wù)端通過RSA算法(RsaPriKey、handShake)解密得到明文的DH公鑰。
* **再通過Dh公鑰生成自己的DHGen私鑰,再把該DH私鑰作為AES,把自己的DHpubKey傳遞給客戶端
* 3-客戶端通過收到服務(wù)端的DHPubKey和DH算法得到自己的DHGen私鑰
* 雙方算出的DHGen私鑰是一樣的,也就是把這個DHGen私鑰給AES作為aeskey,雙方交互時(shí)加解密使用
* 2-服務(wù)端通過RSA算法(RsaPriKey、handShake)解密得到明文的DH公鑰。
* **再通過Dh公鑰生成自己的DHGen私鑰,再把該DH私鑰作為AES,把自己的DHpubKey傳遞給客戶端
* 3-客戶端通過收到服務(wù)端的DHPubKey和DH算法得到自己的DHGen私鑰
* 雙方算出的DHGen私鑰是一樣的,也就是把這個DHGen私鑰給AES作為aeskey,雙方交互時(shí)加解密使用
2020-04-04