在Retrofit的基礎(chǔ)上結(jié)合OpenSSL實現(xiàn)服務(wù)器和客戶端之間數(shù)據(jù)加密通信

安全加密C語言庫OpenSSL奶镶,在Android中服務(wù)器和客戶端之間的簽名驗證和數(shù)據(jù)加密通信等擂煞。

OpenSSL系列文章:

一浆兰、Android CMake輕松實現(xiàn)基于OpenSSL的HmacSHA1簽名
二造寝、Android CMake輕松實現(xiàn)基于OpenSSL的SHA(1-512)簽名
三常摧、Android CMake輕松實現(xiàn)基于OpenSSL的MD5信息摘要&異或加解密
四搅吁、Android CMake輕松實現(xiàn)基于OpenSSL的AES加解密
五、Android CMake輕松實現(xiàn)基于OpenSSL的RSA加解密
六落午、Android CMake輕松實現(xiàn)基于OpenSSL的RSA簽名和驗證
七谎懦、在Retrofit的基礎(chǔ)上結(jié)合OpenSSL實現(xiàn)服務(wù)器和客戶端之間數(shù)據(jù)加密通信

實現(xiàn)原理:

要實現(xiàn)服務(wù)器端和客戶端數(shù)據(jù)加密通信,客戶端可以通過RSA公鑰加密溃斋,服務(wù)器端接收到客戶端數(shù)據(jù)之后界拦,用私鑰進(jìn)行解密就可以獲取到客戶端的明文數(shù)據(jù)。在數(shù)據(jù)傳輸?shù)倪^程中梗劫,即使數(shù)據(jù)暴露了也沒事享甸,因為通過RSA公鑰加密的數(shù)據(jù),只能通過對應(yīng)的私鑰才能解密梳侨,而私鑰只存在于服務(wù)器端蛉威,別人是無法獲取的。但是上文中已經(jīng)講過了猫妙,當(dāng)RSA加解密大量數(shù)據(jù)的時候瓷翻,速度是很慢的,這在服務(wù)器和客戶端之間通信是覺得不允許的割坠。況且有的時候服務(wù)器端返回數(shù)據(jù)的時候也需要進(jìn)行加密處理齐帚,而公鑰是開放的,所以用私鑰加密也就沒有多大意義了彼哼。所以就有了RSA和AES結(jié)合对妄,實現(xiàn)服務(wù)器端和客戶端的安全,高效數(shù)據(jù)加密通信敢朱。

實現(xiàn)過程:

舉個列子說明剪菱,在這只是為了說明服務(wù)器端和客戶端加密通信摩瞎。用戶輸入用戶名和密碼注冊成功之后,返回用戶ID和Token孝常。在此過程中客戶端需要把數(shù)據(jù)加密之后向服務(wù)端發(fā)起請求旗们,同時,服務(wù)器端也要把數(shù)據(jù)進(jìn)行加密之后返回客戶端构灸∩峡剩客戶端通過AES加密用戶名和密碼得到密文A,此時通過AES加密需要秘鑰B喜颁,在這里我們隨機(jī)生成稠氮;然后,用RSA公鑰對此隨機(jī)生成的秘鑰B進(jìn)行加密得到密文C半开。服務(wù)器端接收到的數(shù)據(jù)有用戶名和密碼的密文A隔披、AES秘鑰的密文C;接下來服務(wù)器端就可以通過RSA私鑰解密C得到秘鑰B寂拆,然后通過秘鑰B進(jìn)行AES解密A得到用戶名和密碼的明文奢米。服務(wù)器端通過秘鑰B對用戶ID和Token進(jìn)行加密后返回給客戶端,客戶端接收到數(shù)據(jù)后漓库,通過秘鑰B解密得到原始數(shù)據(jù)恃慧。如果客戶端需要保存此用戶ID的話,可通過AES加密后存儲到SharedPreferences中渺蒿,這里有一個不變的秘鑰痢士,可寫死在.so文件中,提高反編譯門檻茂装。
結(jié)合Retrofit來使用的話怠蹂,可在interceptor中統(tǒng)一封裝加密過程;自定義解析器先解密后再進(jìn)行數(shù)據(jù)解析少态。

下載代碼運行城侧,在控制臺中輸入“body”,將看到所有調(diào)試信息彼妻。歡迎star嫌佑,fork,轉(zhuǎn)載侨歉。

源碼:https://github.com/GitPhoenix/OpenSSL

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屋摇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子幽邓,更是在濱河造成了極大的恐慌炮温,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牵舵,死亡現(xiàn)場離奇詭異柒啤,居然都是意外死亡倦挂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門担巩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來方援,“玉大人,你說我怎么就攤上這事涛癌】虾В” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵祖很,是天一觀的道長。 經(jīng)常有香客問我漾脂,道長假颇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任骨稿,我火速辦了婚禮笨鸡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坦冠。我一直安慰自己形耗,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布辙浑。 她就那樣靜靜地躺著激涤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪判呕。 梳的紋絲不亂的頭發(fā)上倦踢,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音侠草,去河邊找鬼辱挥。 笑死,一個胖子當(dāng)著我的面吹牛边涕,可吹牛的內(nèi)容都是我干的晤碘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼功蜓,長吁一口氣:“原來是場噩夢啊……” “哼园爷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起霞赫,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤腮介,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后端衰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叠洗,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡甘改,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灭抑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片十艾。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腾节,靈堂內(nèi)的尸體忽然破棺而出忘嫉,到底是詐尸還是另有隱情,我是刑警寧澤案腺,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布庆冕,位于F島的核電站,受9級特大地震影響劈榨,放射性物質(zhì)發(fā)生泄漏访递。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一同辣、第九天 我趴在偏房一處隱蔽的房頂上張望拷姿。 院中可真熱鬧,春花似錦旱函、人聲如沸响巢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽培廓。三九已至拷恨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闲坎。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工遂庄, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留都哭,地道東北人详民。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像涛酗,于是被迫代替她去往敵國和親铡原。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容