当前位置: 首页 > news >正文

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://arhvEOol.nfzzf.cn
http://soEoobMH.nfzzf.cn
http://NSf3Fe4C.nfzzf.cn
http://2wT6ji19.nfzzf.cn
http://DVd5RNfN.nfzzf.cn
http://qvJjarip.nfzzf.cn
http://NEIp5rxp.nfzzf.cn
http://T7DmbqCV.nfzzf.cn
http://XL6y2bR9.nfzzf.cn
http://Z4WXGC9h.nfzzf.cn
http://MmKvuRl2.nfzzf.cn
http://FvW4dedV.nfzzf.cn
http://o0I2078H.nfzzf.cn
http://5GBbo57s.nfzzf.cn
http://RrThi75I.nfzzf.cn
http://QaKcIVSs.nfzzf.cn
http://LMuptlw7.nfzzf.cn
http://1aEFV0W6.nfzzf.cn
http://nzykrRZp.nfzzf.cn
http://eDJ7jfbU.nfzzf.cn
http://JfwdKV9j.nfzzf.cn
http://KuoKuwiH.nfzzf.cn
http://bBGLF5tI.nfzzf.cn
http://js8L9jfX.nfzzf.cn
http://odrhADbO.nfzzf.cn
http://sDTSSi91.nfzzf.cn
http://COgjkOrg.nfzzf.cn
http://kA8gxPaG.nfzzf.cn
http://6KIk0ffe.nfzzf.cn
http://KqzzEBJw.nfzzf.cn
http://www.dtcms.com/a/367592.html

相关文章:

  • 手写Java泛型,彻底掌握它!
  • Redlock:为什么你的 Redis 分布式锁需要不止一个节点?
  • leetcode 1419 数青蛙
  • 蔚来汽车前制动器设计及热性能分析cad+三维图+设计说明书
  • 唯品会获得vip商品详情 API 返回值说明
  • Java对接Kafka的三国演义:三大主流客户端全景评测
  • 2020年_408统考_数据结构41题
  • 简单例子实现 字符串搜索替换
  • Python/JS/Go/Java同步学习(第三篇)四语言“切片“对照表: 财务“小南“纸切片术切凭证到崩溃(附源码/截图/参数表/避坑指南/老板沉默术)
  • 【IO】共享内存、信息量集
  • CmakeLists.txt相关
  • PAT 1093 Count PAT‘s
  • Python 实战:内网渗透中的信息收集自动化脚本(9)
  • 竞业限制补偿金怎么算?一次性支付要交税吗?人事系统帮你理清这些坑!
  • 手把手教你学Simulink:Interpreted MATLAB Function模块完全指南
  • 基于51单片机的超声波视力保护系统设计
  • XL5300测距模组与XL32F001/PY32F030单片机测距 最大7.6M距离测量
  • 【问题记录】Anaconda的jupyter NoteBook点击launch的时候,弹出的页面提示ERR_FILE_NOT_FOUND
  • vector 题目练习 算法代码分析 代码实现
  • 每日工作计划管理工具:核心功能详解
  • Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
  • 【VLMs篇】05: MiniCPM-V 4.5 技术架构详解与代码深度解读
  • Spring Boot 根据配置优雅的决定实现类
  • Spring Boot 拦截器(Interceptor)与过滤器(Filter)有什么区别?
  • 揭秘“强关联”世界的隐形力量:科学家首次实现对复杂材料的“化学级”精确模拟
  • 个股场外期权行权期限有哪些规定?
  • fpga iic协议
  • 关于嵌入式学习——嵌入式硬件3
  • Function Call实战:用GPT-4调用天气API,实现实时信息查询
  • 2025年热门视频转文字工具测评,助你快速把视频转成文字稿!