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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

网络请求中常见的加密机制和加密算法理解

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络请求中常见的加密机制和加密算法理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

請求安全性: 服務器端在接收到請求的時候,要主動鑒別該請求是否有效,是否可接受。

  token:已登陸用戶的識別碼
    解決的問題:用戶調用接口時,不用每次都帶上用戶名和密碼,避免了頻繁在網絡中傳輸密碼被截獲的風險。
    使用場景:用戶登錄系統時傳入用戶名和密碼,服務器校驗成功之后,根據uuid等參數生成token返回給客戶端,同時把該token和該用戶的對應關系緩存在服務器端。客戶端在后續的請求接口中不用每次都傳入用戶名和密碼,只需要傳入token即可。服務器會根據token確定客戶端的身份。
    注意:token可設置生效時間,token失效之后,客戶端重新請求token。

? ? ? ? sign:請求參數的簽名
    解決問題:避免請求參數被惡意修改。保證了請求數據的一致性。
    使用場景:客戶端和服務端約定一個簽名生成算法。客戶端在請求接口之前調用簽名算法,根據參數生成sign值。然后把sign和請求參數一并傳給服務器。
    服務器收到到參數和簽名之后,根據請求參數,調用簽名算法計算出簽名,然后比較該簽名和客戶端傳過來的簽名是否一致,如果一致,則說明請求參數未被修改過,如果不一致,則說明請求參數被修改過。

  nonce:請求中附帶的隨機數
    解決問題:防止惡意程序重復向服務器重復發送相同的請求。
    使用場景:客服端在向服務器發出請求之前,隨機生成nonce參數。服務器在接收到請求之后,取出nonce參數,然后去緩存中查找是否已存在nonce的值。如果存在,則說明該請求已經收到過,則 拒絕本次請求,如果不存在,則說明首次接收到該請求,正常進行處理。

  timestamp:客服端發送請求的時間戳(timestamp一般和nonce組合使用)
    解決的問題:防止服務器端緩存nonce數據量過大的問題。當服務器緩存的nonce較多時,每次查找nonce就會耗費大量時間。通過添加請求時間戳,判斷請求時間到服務器接收到請求的時間差是否在有效處理時間內(例如5分鐘),如果在5分鐘之內則進行處理,如果超出五分鐘則拒絕該請求。這樣,服務器端在緩存nonce的時候,可以設置nonce的緩存時間為5分鐘,超出5分鐘之后,自動清除掉緩存中的nonce,這樣就避免了緩存大量nonce的問題。

    使用場景:客服端在發出請求時,附帶timestamp,記錄下當前的請求時間。服務器接收到請求時,取出timestamp,判斷和當前的時間差,如果超出一定的時間(例如5分鐘),則放棄該請求。如果在5分鐘之內,則取出nonce,去緩存中查找nonce,如果已存在則拒絕掉,如果不存在則正常處理。

?

數據保密性: http請求的數據無論是GET還是POST都可能會被抓包獲取到數據。為了避免用戶的敏感數據被竊取,則需要對數據進行加密處理。

? ? ? ??AES:對稱加密算法
    使用方式:客服端和服務器端共同確定一個用來加密和解密的秘鑰。然后客服端在請求服務器是通過該秘鑰對數據進行加密,服務器端在接收到請求之后使用該秘鑰對數據進行解密。
    優勢:加密效率高
    缺點:秘鑰需要共享給客戶端,具有泄露的風險

? ? ? ??RSA:非對稱加密算法
    使用方式:服務器端生成公鑰和私鑰,把公鑰發送給客戶端。客服端在請求服務器是,通過公鑰對數據進行加密。服務器端接收到請求之后,使用私鑰對加密的數據進行解密。
    優勢:不需要共享私鑰,避免了私鑰泄露的風險。
    劣勢:加密效率低,數據量大是較為耗時

? ? ? ??實際場景中,一般使用如下策略進行加密:

? ? ? ? ? ? ? ??服務器端通過RSA生成公鑰,然后把公鑰給客戶端。客服端在請求服務器前, 隨機生成AES秘鑰,然后用AES秘鑰加密請求數據。之后用RSA公鑰對AES秘鑰進行加密,然后把加密之后的AES秘鑰和加密后的請求數據一起發送給服務器。服務器收到請求之后,先用RSA私鑰解密出AES秘鑰,然后用AES秘鑰對請求數據進行解密,獲取請求數據。

?

? ? ? ?

其他常見算法說明:
   MD5:信息摘要算法,不是加密算法。
      加密算法需要能夠解密出原始數據的。MD5是不可逆的,不存在解密的說法。MD5的目的是用來校驗文件/數據是否和原始數據一致,是否被修改過。只要文件/數據被修改過,則計算出的MD5就不一致。SHA-1類似,可以從來文件校驗和計算數字簽名。
      應用場景:作為計算sign簽名的算法,校驗數據的一致性

  Base64:編碼規范,不是加密算法。
      其存在的目的是為了解決部分網絡傳輸不支持不可見字符的問題。通過Base64編碼把數據流轉化為可打印顯示的字符,之后通過網絡進行傳輸。既然是編碼,那么就可以被解碼還原的。其類似于URL編碼,為了把一些特殊字符轉化為安全字符。
      應用場景:RSA的公鑰為byte數組,在傳給客戶端的時候 ,就可以通過Base64編碼把byte數組轉換為字符串,然后傳給客戶端。

?

總結

以上是生活随笔為你收集整理的网络请求中常见的加密机制和加密算法理解的全部內容,希望文章能夠幫你解決所遇到的問題。

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