Websocket HandShake Sec-WebSocket-Accept 生成策略
时间:2022-04-27
本文章向大家介绍Websocket HandShake Sec-WebSocket-Accept 生成策略,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
先阅读http://tools.ietf.org/html/rfc6455 规范,然后实践。
思路如下:
服务端先获得请求头部的Sec-WebSocket-Key值,然后再其后面连接一个GUID(258EAFA5-E914-47DA-95CA-C5AB0DC85B11),对连接后的字符串做SHA1,得到16进制表示的字符串,将每两位当作一个字节进行分隔,得到字节数组,对字节数组做Base64,即得到Sec-WebSocket-Accept的值。
实践:
Sec-WebSocket-Key: kMgvb6KivsYVl2EHinJHZg==
对kMgvb6KivsYVl2EHinJHZg==258EAFA5-E914-47DA-95CA-C5AB0DC85B11做sha1:
得到c417b4a47e13bfbd5f68d7cfc5a30c9644abb895,将其分隔成字节数组,再对字节数据做Base64:
byte[] bytes = {
(byte)0xc4, (byte)0x17, (byte)0xb4, (byte)0xa4,
(byte)0x7e, (byte)0x13, (byte)0xbf, (byte)0xbd,
(byte)0x5f, (byte)0x68, (byte)0xd7, (byte)0xcf,
(byte)0xc5, (byte)0xa3, (byte)0x0c, (byte)0x96,
(byte)0x44, (byte)0xab, (byte)0xb8, (byte)0x95
};
System.out.println(Base64.encodeBase64String(bytes));
得到xBe0pH4Tv71faNfPxaMMlkSruJU=
- C语言第六讲,数组
- C语言第五讲,语句 顺序循环选择.
- C语言第四讲,typedef 关键字,以及作用域
- C语言第三讲,基本数据类型
- 64位内核第二讲,进程保护之对象钩子
- x64内核HOOK技术之拦截进程.拦截线程.拦截模块
- Spring开启方法异步执行
- 64位内核第一讲,和32位内核的区别
- Maven精选系列--发布jar包到Nexus私库
- 《SpringMVC从入门到放肆》五、SpringMVC配置式开发(处理器适配器)
- 《SpringMVC从入门到放肆》四、SpringMVC配置式开发(处理器映射器)
- 什么是Spring Boot?
- 《SpringMVC从入门到放肆》三、DispatcherServlet的url-pattern配置详解
- 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android处理视图圆角和色彩的工具类
- Flutter之Timer实现短信验证码获取60s倒计时功能的代码
- Android仿优酷视频的悬浮窗播放效果
- Android 本地广播和强制下线功能的实现代码
- Android实现强制下线功能的示例代码
- 如何用HMS Nearby Service给自己的App添加近距离数据传输功能
- Android自定义控件之圆形进度条动画
- Android 使用 Scroller 实现平滑滚动功能的示例代码
- Android文件操作工具类详解
- Android之RecycleView实现指定范围的拖动效果
- Android 通过代码安装 APK的方法详解
- Android ListView实现无限循环滚动
- ignite:一个漂亮的多用户SS/SSR面板
- FreshRSS:开源免费的RSS阅读器
- 使用snap快速安装RocketChat你的聊天服务器