真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

開發(fā)平臺(tái)加解密及鑒權(quán)原理的示例分析

本篇文章為大家展示了開發(fā)平臺(tái)加解密及鑒權(quán)原理的示例分析,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司技術(shù)團(tuán)隊(duì)十載來(lái)致力于為客戶提供網(wǎng)站制作、成都網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、成都營(yíng)銷網(wǎng)站建設(shè)、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了上千余家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。

    一個(gè)網(wǎng)站要保證安全,加密、防篡改、身份識(shí)別等是起碼的要求。

有幾個(gè)問(wèn)題:

  1. https 為什么公網(wǎng)一定要用https ?

  2. https 什么原理?

  3. https 為什么要用對(duì)稱加密+非對(duì)稱加密?

  4. https 會(huì)讓請(qǐng)求變慢嗎?

  5. 為什么不能只用非對(duì)稱加密?

  6. 為什么需要數(shù)字證書?

  7. 有了https ,能做到加密,防篡改,身份識(shí)別嗎?

  8. 怎么做鑒權(quán)? …

首先, 為什么要用https,純http,用tcpdump,wirehsark 等軟件抓包,根據(jù)http 協(xié)議規(guī)范,可以很簡(jiǎn)單看清每個(gè)數(shù)據(jù)包,也可以很輕松的篡改數(shù)據(jù),動(dòng)態(tài)型網(wǎng)站這是非常危險(xiǎn)的。因此對(duì)傳輸數(shù)據(jù)加密是非常有必要的,于是有了https。

https 什么原理?

  結(jié)論是對(duì)稱加密遠(yuǎn)快于非對(duì)稱加密,而非對(duì)稱加密非常慢。那https 如果采用純非對(duì)稱加密,如果包太大,就難以接受了。那https 能不能利用非對(duì)稱加密的安全性,用利用對(duì)稱加密的速度?這是可以的, https 的原理到底是怎樣呢?參考圖:

開發(fā)平臺(tái)加解密及鑒權(quán)原理的示例分析

    1. 服務(wù)端非對(duì)稱加密的公鑰A、私鑰A’。

    1. 客戶端發(fā)起請(qǐng)求,服務(wù)端返回公鑰A明文給傳客戶端。

    1. 客戶端隨機(jī)生成一個(gè)用于對(duì)稱加密的密鑰X,用公鑰A加密后傳給服務(wù)端。

    1. 服務(wù)端拿到后用私鑰A’解密得到密鑰X,保存后將sessionId 返回客戶端。

    1. 這樣雙方就都擁有密鑰X了,且別人無(wú)法知道它。之后雙方所有數(shù)據(jù)都用密鑰X加密解密。

理解了https 的原理可以知道,并不是每個(gè)body 都在用非對(duì)稱加密算法加解密,而是用的對(duì)稱加密算法在加密解密(部分瀏覽器會(huì)存在一個(gè)文件中,可以用于抓包),然后對(duì)稱加密解密很快,速度比純http 慢一點(diǎn),但是并不會(huì)慢多少。

為什么要有數(shù)字證書?

服務(wù)端給客戶端給公鑰,并不是直接給公鑰,而是給的證書,這是為什么?因?yàn)楣€可能被中間人篡改,所以為了公鑰可信,證書會(huì)有公鑰和私鑰對(duì)公鑰hash加密后一個(gè)數(shù)字簽名,服務(wù)端拿著公鑰對(duì)數(shù)字簽名解密,如果和公鑰hash 對(duì)的上,就說(shuō)明公鑰可靠。 開發(fā)平臺(tái)加解密及鑒權(quán)原理的示例分析

如何鑒權(quán)?

https 能身份識(shí)別嗎?其實(shí)只能做到單向識(shí)別,想鑒權(quán),其實(shí)不夠,我們還需要其他方式。常見的鑒權(quán)方式有哪些?

類md5鑒權(quán)

客戶端和服務(wù)端使用同樣的簽名方式,服務(wù)器對(duì)請(qǐng)求算的結(jié)果和客戶端傳遞的值進(jìn)行對(duì)比,就可以鑒權(quán)。這里access key 用作識(shí)別用戶,secret key 是鹽,也可以理解成密碼。這里很多開放云平臺(tái)都是采用類似的加密算法,比如騰訊云采用的TC3-HMAC-SHA256 簽名方法

最簡(jiǎn)單的驗(yàn)簽方式是使用md5做單向加密:md5(msg),但是這種粗暴的加密方式的缺點(diǎn)就是可以暴力破解。然后升級(jí)的做法就是加鹽,原理如下:

import hmac
message = 'messege' #和url,時(shí)間戳等固定參數(shù)有關(guān)
key = 'sdfsdfwfahesdfsdfsdfgwgdfgd' # 隨機(jī)字符串
h = hmac.new(key, message, digestmod='MD5')
sign = h.hexdigest()

客戶端和服務(wù)器約定使用相同的隨機(jī)字符串作為salt ,這樣,sign傳遞到server 后,server 使用相同的算法對(duì)提取的參數(shù)做相同運(yùn)算,即可獲得sign, 作為對(duì)比即可知道是否鑒權(quán)通過(guò)。我們常用的secret key 一般就是salt 。我們能對(duì)接口鑒權(quán)了后,有個(gè)問(wèn)題,當(dāng)不同客戶有不同權(quán)限時(shí),server 怎么識(shí)別不同的客戶?這里access key 就起作用了,server 維護(hù)個(gè)字典,每個(gè)access key 對(duì)應(yīng)一個(gè) secret key , 就可以區(qū)分開客戶。

server 原理類似:

dict = {
    access_key1 : secrect_key1,
    access_key2 : secrect_key2

} #按客戶維度維護(hù)的字典,和session的性質(zhì)類似

import hmac

access_key = req.header.get(access_key)

key = dict[access_key]

message = req.body.get(msg)

h = hmac.new(key, message, digestmod='MD5') #為增加復(fù)雜度,這里,會(huì)對(duì)message 混雜時(shí)間戳,uri等固定參數(shù)

sign = h.hexdigest()

if sign == req.header.get('sign'):
    return true
else:
    return false
rsa鑒權(quán)

還有可以利用rsa 進(jìn)行簽名,用對(duì)方公鑰加密,傳給對(duì)方,對(duì)方用自己的公鑰加密,自己用自己的私鑰對(duì)對(duì)方傳來(lái)數(shù)據(jù)進(jìn)行解密。這種方式在body 很大的時(shí)候有缺點(diǎn),因?yàn)榉菍?duì)稱加解密會(huì)很慢,優(yōu)點(diǎn)是相對(duì)安全,據(jù)了解,有部分大廠會(huì)使用這種方式。

其實(shí),是不是可以借鑒https ,用一種非對(duì)稱+對(duì)稱加密的方式鑒權(quán)。目前用第一種類md5 方式更多。

上述內(nèi)容就是開發(fā)平臺(tái)加解密及鑒權(quán)原理的示例分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站題目:開發(fā)平臺(tái)加解密及鑒權(quán)原理的示例分析
本文地址:http://weahome.cn/article/poiios.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部