Websocket的Key多少個字節

在WebSocket協議中,握手過程中的Sec-WebSocket-Key是一個由客戶端生成的隨機字符串,用于安全地建立WebSocket連接。這個Sec-WebSocket-Key是基于Base64編碼的,并且通常由客戶端在WebSocket握手請求的頭部字段中發送。根據WebSocket協議規范(RFC 6455),Sec-WebSocket-Key的長度應該是16字節(128位)。

生成過程
客戶端生成客戶端首先生成一個隨機的16字節(128位)的密鑰。這個密鑰可以是任何隨機生成的字節序列。

Base64編碼:然后,這個16字節的隨機數被編碼為Base64字符串Base64編碼會將原始的二進制數據轉換為ASCII字符串,使得這些數據可以通過文本傳輸由于16字節可以表示為128位,轉換成Base64編碼后,長度會增加大約33%。因此,編碼后的字符串長度大約為24字節(在大多數實現中,不包括填充字符=

發送:客戶端將這個Base64編碼的字符串放在HTTP頭部字段Sec-WebSocket-Key中,并發送給服務器。

示例
例如,一個16字節隨機數(二進制表示)可能是:

0xb3 0x7a 0x4f 0x2c 0xc0 0x65 0x22 0xf9 0x39 0x87 0x79 0x09 0xb4 0x84 0x5e 0xf8
將其轉換為Base64編碼后,得到:

b7pPwmFmJSIvnxmZjRg=
這個Base64字符串就是Sec-WebSocket-Key的值,長度大約為24字節

注意事項
填充:在一些實現中,Base64編碼后的字符串可能包含=字符作為填充以確保編碼后的字符串長度是4的倍數但在大多數情況下,WebSocket握手請求中使用的Base64編碼不包括這些填充字符

服務器響應:服務器在接收到客戶端的Sec-WebSocket-Key后,會生成一個類似的響應頭部字段Sec-WebSocket-Accept,該字段的值是通過將客戶端的Sec-WebSocket-Key值與一個特定的GUID字符串(258EAFA5-E914-47DA-95CA-C5AB0DC85B11)進行連接,然后對整個結果進行SHA-1哈希,最后將哈希值再進行Base64編碼得到的。這個過程確保了雙方都能安全地驗證對方的身份,并建立加密的WebSocket連接。

總結,Sec-WebSocket-Key應該是16字節(128位),但在實際應用中通過Base64編碼后通常表示為大約24字節的字符串

SHA-1生成的摘要長度為?20字節?(160位),通常以40個十六進制字符表示。 ?

核心信息

  • ?160位?:SHA-1算法將輸入數據轉換為固定長度的160位二進制輸出,對應20字節。 ?
  • ?十六進制表示?:由于每個十六進制字符占用4位,因此最終呈現為40個十六進制字符(如abcdef...)。 ?
  • ?安全性問題?:由于存在安全漏洞,SHA-1已被逐步淘汰,當前更推薦使用SHA-2或SHA-3算法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95841.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95841.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95841.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SVT-AV1編碼器中實現WPP依賴管理核心調度

一 assign_enc_dec_segments 函數。這個函數是 SVT-AV1 編碼器中實現波前并行處理(WPP) 和分段依賴管理的核心調度器之一。//函數功能:分配編碼解碼段任務//返回值Bool//True 成功分配了一個段給當前線程,調用者應該處理這個段//F…

直接讓前端請求代理到自己的本地服務器,告別CV報文到自己的API工具,解放雙手

直接使用前端直接調用本地服務器,在自己的瀏覽器搜索插件proxyVerse,類似的插件應該還有一些,可以選擇自己喜歡的這類插件可以將瀏覽器請求,直接轉發到本地服務器,這樣在本地調試的時候,不需要前端項目&…

Golang Goroutine 與 Channel:構建高效并發程序的基石

在當今這個多核處理器日益普及的時代,利用并發來提升程序的性能和響應能力已經成為軟件開發的必然趨勢。而Go語言,作為一門為并發而生的語言,其設計哲學中將“并發”置于核心地位。其中,Goroutines 和 Channels 是Go實現并發編程的…

17 C 語言宏進階必看:從宏替換避坑到宏函數用法,不定參數模擬實現一次搞定

預處理詳解1. 預定義符號//C語?設置了?些預定義符號,可以直接使?,預定義符號也是在預處理期間處理的。 __FILE__ //進?編譯的源?件--預處理階段被替換成指向文件名字符串的指針--char* 類型的變量 __LINE__ //?件當前的?號 --預處理階段替換成使用…

深入剖析 HarmonyOS ArkUI 聲明式開發:狀態管理藝術與最佳實踐

好的,請看這篇關于 HarmonyOS ArkUI 聲明式開發范式與狀態管理的技術文章。 深入剖析 HarmonyOS ArkUI 聲明式開發:狀態管理藝術與最佳實踐 引言 隨著 HarmonyOS 4、5 的廣泛應用以及面向未來的 HarmonyOS NEXT(API 12)的發布&…

Qwen-Code安裝教程

一、概述Qwen Code 是一個強大的基于命令行、面向開發者的 AI 工作流工具,改編自 Gemini CLI,專門針對 Qwen3-Coder 模型進行了優化。它專門為代碼理解、代碼重構、自動化工作流、Git 操作等場景設計,讓你的開發工作變得更高效、更智能。它既…

老師傅一分鐘精準判斷電池好壞!就靠這個神器!

在汽車維修與保養領域,蓄電池狀態的準確判斷一直是技術人員面臨的重要挑戰。傳統的電壓測量方法只能反映表面現象,無法深入評估蓄電池的實際健康狀態。Midtronics MDX-P300蓄電池及電氣系統測試儀作為專業級診斷設備,通過電導測試技術和多系統…

Axure筆記

Axure介紹 快速原型的軟件 應用場景:拉投資、給項目團隊、銷售演示、項目投標、內部收集反饋、教學 軟件安裝與漢化 漢化:復制lang文件夾和三個dll 軟件的基礎功能 基本布局:菜單欄、工具欄、頁面和摘要、元件和母版、畫布、樣式交互和說明設…

Pytorch Yolov11 OBB 旋轉框檢測+window部署+推理封裝 留貼記錄

Pytorch Yolov11 OBB 旋轉框檢測window部署推理封裝 留貼記錄 上一章寫了下【Pytorch Yolov11目標檢測window部署推理封裝 留貼記錄】,這一章開一下YOLOV11 OBB旋轉框檢測相關的全流程,有些和上一章重復的地方我會簡寫,要兩篇結合著看&#x…

《Keil 開發避坑指南:STM32 頭文件加載異常與 RTE 配置問題全解決》

《Keil 開發避坑指南:STM32 頭文件加載異常與 RTE 配置問題全解決》文章提綱一、引言? 簡述 Keil 在 STM32 開發中的核心地位,指出頭文件加載和 RTE(運行時環境)配置是新手常遇且關鍵的問題,說明本文旨在為開發者提…

TortoiseGit 2.4.0.0 64位安裝教程(附詳細步驟和Git配置 附安裝包)

本教程詳細講解 ?TortoiseGit 2.4.0.0 64位版本? 的完整安裝步驟,包括如何運行 ?TortoiseGit-2.4.0.0-64bit.msi? 安裝包、設置安裝路徑、關聯 Git 環境,以及安裝后的基本配置方法,適合 Windows 用戶快速上手 Git 圖形化管理工具。 一、…

大數據畢業設計選題推薦-基于大數據的高級大豆農業數據分析與可視化系統-Hadoop-Spark-數據可視化-BigData

?作者主頁:IT畢設夢工廠? 個人簡介:曾從事計算機專業培訓教學,擅長Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等項目實戰。接項目定制開發、代碼講解、答辯教學、文檔編寫、降重等。 ?文末獲取源碼? 精彩專欄推薦?…

學習機器學習能看哪些書籍

關注B站可以觀看更多實戰教學視頻:hallo128的個人空間 在機器學習與深度學習的知識海洋中,選擇合適的書籍往往是入門和進階的關鍵。以下四本經典著作各具特色,覆蓋了從基礎理論到實踐應用的多個維度,無論你是初學者還是有一定基礎…

Unity通過Object學習原型模式

原型模式簡述 依據現有的實例生成新的實例 Object的實例化方法 Object.Instantiate 克隆 original 對象并返回克隆對象 Unity中的實例:預制體或場景中的游戲對象 示例 方法1:手動創建對象并添加組件 方法2:使用實例化方法,實…

【踩坑記錄】Unity 項目中 PlasticSCM 掩蔽列表引發的 文件缺失問題排查與解決

問題描述: Plastic SCM 簽入時,彈窗提示“項xxx在該工作區中不存在” Unity 項目中 PlasticSCM 掩蔽列表引發的 文件缺失問題排查與解決 文章目錄Unity 項目中 PlasticSCM 掩蔽列表引發的 文件缺失問題排查與解決一、前言二、Unity 與 .meta 文件機制1. …

Redis實戰-附近的人實現的解決方案

1.GEO數據結構1.1實現附近的人的數據結構Redis提供的專用的數據結構來實現附近的人的操作,這也是企業的主流解決方案,建議使用這種解決方案。GEO就是Redis提供的地理坐標計算的一個數據結構,可以很方便的計算出來兩個地點的地理坐標&#xff…

HTML第七課:發展史

HTML第七課:發展史發展史快速學習平臺發展史 示例 HTML 發展史 前端三件套:html 、css、javascript(Js) HTML 發展史 HTML 1.0(1993 年) 蒂姆伯納斯 - 李(Tim Berners - Lee)發明了萬維網,同…

中國生成式引擎優化(GEO)市場分析:領先企業格局與未來趨勢分析

一、GEO市場變革中國生成式引擎優化(Generative Engine Optimization, GEO)市場正經歷一場深刻的變革,其核心在于生成式人工智能(Generative AI)對傳統搜索引擎和數字營銷模式的顛覆性影響。傳統搜索引擎以“提供鏈接”…

好看的背景顏色 uniapp+小程序

<view class"bg-decoration"><view class"circle-1"></view><view class"circle-2"></view><view class"circle-3"></view> </view>/* 背景裝飾 */.container{background: linear-gr…

《駕馭云原生復雜性:隱性Bug的全鏈路防御體系構建》

容器、服務網格、動態配置等抽象層為系統賦予了彈性與效率,但也像深海中的暗礁,將技術風險隱藏在標準化的接口之下。那些困擾開發者的隱性Bug,往往并非源于底層技術的缺陷,而是對抽象層運行邏輯的理解偏差、配置與業務特性的錯配,或是多組件交互時的協同失效。它們以“偶發…