日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JWT对称加密非对称加密

發布時間:2025/3/21 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JWT对称加密非对称加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JWT

JWT原理圖:

JWT的數據結構
jwt頭:JWT頭部分是一個描述JWT元數據的JSON對象
有效載荷:七個默認字段+自定義私有字段
簽名=HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload),secret

JWT由頭部(header)載荷(payload)簽證(sign)三部分構成
jwt的頭部包含兩部分信息:
聲明類型,這里是jwt
聲明加密的算法 通常直接使用 HMAC SHA256
然后將頭部進行base64加密(該加密是可以對稱解密的),構成了第一部分。

# JWT頭部分是一個描述JWT元數據的JSON對象,通常如下所示。 { "alg": "HS256", "type": "JWT" } # 1)alg屬性表示簽名使用的算法,默認為HMAC SHA256(寫為HS256); # 2)type屬性表示令牌的類型,JWT令牌統一寫為JWT。 # 3)最后,使用Base64 URL算法將上述JSON對象轉換為字符串保存。

載荷就是存放有效信息的地方。這些有效信息包含三個部分:
標準中注冊聲明
私有的聲明
公共的聲明 :
公共的聲明可以添加任何的信息,一般添加用戶的相關信息或其他業務需要的必要信息.但不建議添加敏感信息,因為該部分在客戶端可解密。
私有的聲明 :
私有聲明是提供者和消費者所共同定義的聲明,一般不建議存放敏感信息,因為base64是對稱解密的,意味著該部分信息可以歸類為明文信息。
有效載荷部分,是JWT的主體內容部分,也是一個JSON對象,包含需要傳遞的數據。 JWT指定七個默認字段供選擇。

''' iss:發行人 exp:到期時間 sub:主題 aud:用戶 nbf:在此之前不可用 iat:發布時間 jti:JWT ID用于標識該JWT '''#2、除以上默認字段外,我們還可以自定義私有字段,如下例: { "sub": "1234567890", "name": "chongchong", "admin": true }#3、注意 默認情況下JWT是未加密的,任何人都可以解讀其內容,因此不要構建隱私信息字段,存放保密信息,以防止信息泄露。 JSON對象也使用Base64 URL算法轉換為字符串保存。

jwt的第三部分是一個簽證信息,這個簽證信息由三部分組成
header (base64后的)
payload (base64后的)
secret·10
將上面的兩個編碼后的字符串都用句號.連接在一起(頭部在前),就形成了:JWT

# 1.簽名哈希部分是對上面兩部分數據簽名,通過指定的算法生成哈希,以確保數據不會被篡改。 # 2.首先,需要指定一個密碼(secret),該密碼僅僅為保存在服務器中,并且不能向用戶公開。 # 3.然后,使用標頭中7指定的簽名算法(默認情況下為HMAC SHA256)根據以下公式生成簽名。 # 4.HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret) # 5.在計算出簽名哈希后,JWT頭,有效載荷和簽名哈希的三個部分組合成一個字符串,每個部分用"."分隔,就構成整個JWT對象。

JWT方案中安全性問題
jwt是存儲在客戶端的,服務器端不需要存儲jwt的,客戶端每次發送請求時會攜帶該token,然后到服務器端會驗證token是否正確,是否過期了,然后會通過解碼出攜帶的用戶的信息的,但是如果token在傳輸的過程中被攻擊者截取了的話,那么對方就可以偽造請求,利用竊取到的token模擬正常請求,實現用戶的正常操作,而服務器端完全不知道,因為JWT在服務器端是無狀態的,且服務器端不存儲jwt的。其實jwt解決的問題是認證和授權的問題,對于安全性的話,還是建議對外公布的接口使用https.

JSON Web Token 它有如下優點:

  • 可以適用于分布式的單點登錄場景。
  • 可以使用跨域認證解決方案。
  • jwt實現自動刷新token的方案(待認證)。
  • jwt核心
       1)給用戶頒發的token值相當于一把鎖,服務器端的秘鑰相當于一把鑰匙
       2)每次客戶端請求都會攜帶這把鎖,服務器端用秘鑰去開這把鎖,如果無法打開就證明是偽造的

    無狀態登錄:
    服務器不保存用戶的登錄信息,由客戶端請求攜帶自己的身份信息。服務器不再保存用戶的登錄信息,多次請求不用訪問回到同一臺服務,服務器可以彈性伸縮,減小服務端壓力,缺點一旦JWT簽發,在有效期內將會一直有效

    對稱加密:

    對稱加密指的就是加密和解密使用同一個秘鑰,所以叫做對稱加密。對稱加密只有一個秘鑰,作為私鑰。
    常見的對稱加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

    對稱加密


    優點:
    算法公開、計算量小、加密速度快、加密效率高

    缺點:
    在數據傳送前,發送方和接收方必須商定好秘鑰,然后 使雙方都能保存好秘鑰。其次如果一方的秘鑰被泄露,那么加密信息也就不安全了。另外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成為雙方的負擔。

    非對稱加密:

    非對稱加密指的是:加密和解密使用不同的秘鑰,一把作為公開的公鑰,另一把作為私鑰。公鑰加密的信息,只有私鑰才能解密。

    公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

    非對稱加密算法實現機密信息交換的基本過程是:
    甲方生成一對密鑰并將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密后再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密。甲方只能用其專用密鑰解密由其公用密鑰加密后的任何信息。

    私鑰加密的信息,只有公鑰才能解密。
    常見的非對稱加密算法有:RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)

    優點:
    安全

    缺點:
    速度較慢

    非對稱加密

    對稱加密和非對稱加密的區別

    如果通過md5加密,網關需要每次訪問授權中心去通信驗證,微服務需要多次訪問授權中心去解密jwt,網絡請求頻率高,授權中心壓力過大。而通過非對稱加密則不存在這個問題。用公鑰即可解密header(頭部)與payload(載荷)。

    1、加密和解密過程不同

    對稱加密過程和解密過程使用的同一個密鑰,加密過程相當于用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密采用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。

    2、加密解密速度不同

    對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。

    3、傳輸的安全性不同

    對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。

    非對稱加密算法中私鑰是基于不同的算法生成不同的隨機數,私鑰通過一定的加密算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。

    總結

    以上是生活随笔為你收集整理的JWT对称加密非对称加密的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。