網(wǎng)絡(luò)請(qǐng)求中常見(jiàn)的加密機(jī)制和加密算法理解

請(qǐng)求安全性: 服務(wù)器端在接收到請(qǐng)求的時(shí)候,要主動(dòng)鑒別該請(qǐng)求是否有效刀闷,是否可接受熊泵。

token:已登陸用戶的識(shí)別碼
    解決的問(wèn)題:用戶調(diào)用接口時(shí),不用每次都帶上用戶名和密碼甸昏,避免了頻繁在網(wǎng)絡(luò)中傳輸密碼被截獲的風(fēng)險(xiǎn)顽分。
    使用場(chǎng)景:用戶登錄系統(tǒng)時(shí)傳入用戶名和密碼,服務(wù)器校驗(yàn)成功之后筒扒,根據(jù)uuid等參數(shù)生成token返回給客戶端怯邪,同時(shí)把該token和該用戶的對(duì)應(yīng)關(guān)系緩存在服務(wù)器端』ǘ眨客戶端在后續(xù)的請(qǐng)求接口中不用每次都傳入用戶名和密碼悬秉,只需要傳入token即可。服務(wù)器會(huì)根據(jù)token確定客戶端的身份冰蘑。
    注意:token可設(shè)置生效時(shí)間和泌,token失效之后,客戶端重新請(qǐng)求token祠肥。

sign:請(qǐng)求參數(shù)的簽名
    解決問(wèn)題:避免請(qǐng)求參數(shù)被惡意修改武氓。保證了請(qǐng)求數(shù)據(jù)的一致性。
    使用場(chǎng)景:客戶端和服務(wù)端約定一個(gè)簽名生成算法仇箱∠厮。客戶端在請(qǐng)求接口之前調(diào)用簽名算法,根據(jù)參數(shù)生成sign值剂桥。然后把sign和請(qǐng)求參數(shù)一并傳給服務(wù)器忠烛。
    服務(wù)器收到到參數(shù)和簽名之后,根據(jù)請(qǐng)求參數(shù)权逗,調(diào)用簽名算法計(jì)算出簽名美尸,然后比較該簽名和客戶端傳過(guò)來(lái)的簽名是否一致,如果一致斟薇,則說(shuō)明請(qǐng)求參數(shù)未被修改過(guò)师坎,如果不一致,則說(shuō)明請(qǐng)求參數(shù)被修改過(guò)堪滨。

nonce:請(qǐng)求中附帶的隨機(jī)數(shù)
    解決問(wèn)題:防止惡意程序重復(fù)向服務(wù)器重復(fù)發(fā)送相同的請(qǐng)求胯陋。
    使用場(chǎng)景:客服端在向服務(wù)器發(fā)出請(qǐng)求之前,隨機(jī)生成nonce參數(shù)。服務(wù)器在接收到請(qǐng)求之后惶岭,取出nonce參數(shù)寿弱,然后去緩存中查找是否已存在nonce的值。如果存在按灶,則說(shuō)明該請(qǐng)求已經(jīng)收到過(guò)症革,則 拒絕本次請(qǐng)求,如果不存在鸯旁,則說(shuō)明首次接收到該請(qǐng)求噪矛,正常進(jìn)行處理。

timestamp:客服端發(fā)送請(qǐng)求的時(shí)間戳(timestamp一般和nonce組合使用)
    解決的問(wèn)題:防止服務(wù)器端緩存nonce數(shù)據(jù)量過(guò)大的問(wèn)題铺罢。當(dāng)服務(wù)器緩存的nonce較多時(shí)艇挨,每次查找nonce就會(huì)耗費(fèi)大量時(shí)間。通過(guò)添加請(qǐng)求時(shí)間戳韭赘,判斷請(qǐng)求時(shí)間到服務(wù)器接收到請(qǐng)求的時(shí)間差是否在有效處理時(shí)間內(nèi)(例如5分鐘)缩滨,如果在5分鐘之內(nèi)則進(jìn)行處理,如果超出五分鐘則拒絕該請(qǐng)求泉瞻。這樣脉漏,服務(wù)器端在緩存nonce的時(shí)候,可以設(shè)置nonce的緩存時(shí)間為5分鐘袖牙,超出5分鐘之后侧巨,自動(dòng)清除掉緩存中的nonce,這樣就避免了緩存大量nonce的問(wèn)題鞭达。

使用場(chǎng)景:客服端在發(fā)出請(qǐng)求時(shí)司忱,附帶timestamp,記錄下當(dāng)前的請(qǐng)求時(shí)間畴蹭。服務(wù)器接收到請(qǐng)求時(shí)坦仍,取出timestamp,判斷和當(dāng)前的時(shí)間差叨襟,如果超出一定的時(shí)間(例如5分鐘)桨踪,則放棄該請(qǐng)求。如果在5分鐘之內(nèi)芹啥,則取出nonce,去緩存中查找nonce铺峭,如果已存在則拒絕掉墓怀,如果不存在則正常處理。

數(shù)據(jù)保密性: http請(qǐng)求的數(shù)據(jù)無(wú)論是GET還是POST都可能會(huì)被抓包獲取到數(shù)據(jù)卫键。為了避免用戶的敏感數(shù)據(jù)被竊取傀履,則需要對(duì)數(shù)據(jù)進(jìn)行加密處理。

AES:對(duì)稱加密算法
    使用方式:客服端和服務(wù)器端共同確定一個(gè)用來(lái)加密和解密的秘鑰。然后客服端在請(qǐng)求服務(wù)器是通過(guò)該秘鑰對(duì)數(shù)據(jù)進(jìn)行加密钓账,服務(wù)器端在接收到請(qǐng)求之后使用該秘鑰對(duì)數(shù)據(jù)進(jìn)行解密碴犬。
    優(yōu)勢(shì):加密效率高
    缺點(diǎn):秘鑰需要共享給客戶端,具有泄露的風(fēng)險(xiǎn)

RSA:非對(duì)稱加密算法
    使用方式:服務(wù)器端生成公鑰和私鑰梆暮,把私鑰發(fā)送給客戶端服协。客服端在請(qǐng)求服務(wù)器是啦粹,通過(guò)公鑰對(duì)數(shù)據(jù)進(jìn)行加密偿荷。服務(wù)器端接收到請(qǐng)求之后,使用私鑰對(duì)加密的數(shù)據(jù)進(jìn)行解密唠椭。
    優(yōu)勢(shì):不需要共享私鑰跳纳,避免了私鑰泄露的風(fēng)險(xiǎn)。
    劣勢(shì):加密效率低贪嫂,數(shù)據(jù)量大是較為耗時(shí)

實(shí)際場(chǎng)景中寺庄,一般使用如下策略進(jìn)行加密:
      服務(wù)器端通過(guò)RSA生成公鑰,然后把公鑰給客戶端力崇《诽粒客服端在請(qǐng)求服務(wù)器前, 隨機(jī)生成AES秘鑰餐曹,然后用AES秘鑰加密請(qǐng)求數(shù)據(jù)逛拱。之后用RSA公鑰對(duì)AES秘鑰進(jìn)行加密,然后把加密之后的AES秘鑰和加密后的請(qǐng)求數(shù)據(jù)一起發(fā)送給服務(wù)器台猴。服務(wù)器收到請(qǐng)求之后朽合,先用RSA私鑰解密出AES秘鑰,然后用AES秘鑰對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行解密饱狂,獲取請(qǐng)求數(shù)據(jù)曹步。

其他常見(jiàn)算法說(shuō)明:
   MD5:信息摘要算法,不是加密算法。
      加密算法需要能夠解密出原始數(shù)據(jù)的休讳。MD5是不可逆的讲婚,不存在解密的說(shuō)法。MD5的目的是用來(lái)校驗(yàn)文件/數(shù)據(jù)是否和原始數(shù)據(jù)一致俊柔,是否被修改過(guò)筹麸。只要文件/數(shù)據(jù)被修改過(guò),則計(jì)算出的MD5就不一致雏婶。SHA-1類似,可以從來(lái)文件校驗(yàn)和計(jì)算數(shù)字簽名物赶。
      應(yīng)用場(chǎng)景:作為計(jì)算sign簽名的算法,校驗(yàn)數(shù)據(jù)的一致性

Base64:編碼規(guī)范留晚,不是加密算法酵紫。
      其存在的目的是為了解決部分網(wǎng)絡(luò)傳輸不支持不可見(jiàn)字符的問(wèn)題。通過(guò)Base64編碼把數(shù)據(jù)流轉(zhuǎn)化為可打印顯示的字符,之后通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸奖地。既然是編碼橄唬,那么就可以被解碼還原的。其類似于URL編碼,為了把一些特殊字符轉(zhuǎn)化為安全字符参歹。
      應(yīng)用場(chǎng)景:RSA的公鑰為byte數(shù)組仰楚,在傳給客戶端的時(shí)候 ,就可以通過(guò)Base64編碼把byte數(shù)組轉(zhuǎn)換為字符串泽示,然后傳給客戶端缸血。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市械筛,隨后出現(xiàn)的幾起案子捎泻,更是在濱河造成了極大的恐慌,老刑警劉巖埋哟,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笆豁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赤赊,警方通過(guò)查閱死者的電腦和手機(jī)闯狱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抛计,“玉大人哄孤,你說(shuō)我怎么就攤上這事〈到兀” “怎么了瘦陈?”我有些...
    開(kāi)封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)波俄。 經(jīng)常有香客問(wèn)我晨逝,道長(zhǎng),這世上最難降的妖魔是什么懦铺? 我笑而不...
    開(kāi)封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任捉貌,我火速辦了婚禮,結(jié)果婚禮上冬念,老公的妹妹穿的比我還像新娘趁窃。我一直安慰自己,他們只是感情好急前,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布醒陆。 她就那樣靜靜地躺著,像睡著了一般叔汁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天据块,我揣著相機(jī)與錄音码邻,去河邊找鬼。 笑死另假,一個(gè)胖子當(dāng)著我的面吹牛像屋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播边篮,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼己莺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了戈轿?” 一聲冷哼從身側(cè)響起凌受,我...
    開(kāi)封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎思杯,沒(méi)想到半個(gè)月后胜蛉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡色乾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年誊册,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暖璧。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡案怯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澎办,到底是詐尸還是另有隱情嘲碱,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布浮驳,位于F島的核電站悍汛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏至会。R本人自食惡果不足惜离咐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奉件。 院中可真熱鬧宵蛀,春花似錦、人聲如沸县貌。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)煤痕。三九已至梧宫,卻和暖如春接谨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背塘匣。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工脓豪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忌卤。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓扫夜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親驰徊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笤闯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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