文档章节

Websocket HandShake Sec-WebSocket-Accept 生成策略

囚兔
 囚兔
发布于 2015/11/20 12:18
字数 212
阅读 999
收藏 1

先阅读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=

© 著作权归作者所有

共有 人打赏支持
囚兔

囚兔

粉丝 39
博文 86
码字总数 47164
作品 1
南京
程序员
私信 提问
netty 和ios通信 的问题

我这边是java netty服务端,需要向苹果手机推送信息,谁知道苹果手机如何通过websocket来连上netty呢? 按照网上的说法: WebSocket不同版本的三种握手方式 我用苹果手机来测试,他们所发的请...

天王盖地虎626
2014/07/23
4K
4
关于websocket的握手过程的疑问

websocket握手协议中,客户端会发送Sec-WebSocket-Key 服务器需要应答Sec-WebSocket-Accept, 其计算规则是Sec-WebSocket-Key+GUID,求sha1,再base64 我的问题是,服务器这个GUID需要怎么填...

蓝天飞
2016/11/18
415
1
总结最近学习的html5中的WebSocket部分

注意点: 火狐浏览器最新的WebSocket对象是MozWebSocket,改的实在蛋疼。 opera(ver 12)浏览器最新版支持的WebSocket协议不是最新的WebSocket协议。让人不爽。 代码部分: 或者 服务端python版...

旧城的骁珖
2011/09/25
3.8K
7
websocket:handlers 不起作用

@jack_jones 你好,想跟你请教个问题: 我在使用Spring websocket 时遇到了websocket:handlers不起作用, 其中Spring版本为4.1.6.RELEASE...

TreasureWe
2016/02/26
918
2
Java EE HTML5 WebSocket 示例

在这个教程中,我们将借助于Java EE websocket的实现(服务器端)来实现HTML5 的 websocket。 1.介绍 HTML5规范带来了使用websocket标准服务让浏览器建立全双工TCP链接的能力。 换言之,浏览...

oschina
2013/08/14
112.8K
64

没有更多内容

加载失败,请刷新页面

加载更多

DevSecOps 运维模式中的安全性

本文想从技术的角度谈谈我对云计算数据中心 DevSecOps 运维模式中的安全性的理解,和过去几年我在云服务业务连续性管理方面的探索。 现在公有云服务商都不约而同地转向 DevSecOps 模式。Dev...

xiangyunyan
21分钟前
6
0
K8s集群部署

环境 系统 角色 IP centos7.4 master-1 10.10.25.149 centos7.4 master-2 10.10.25.112 centos7.4 node-1 10.10.25.150 centos7.4 node-2 10.10.25.151 centos7.4 lb-1 10.10.25.111 centos7......

拜了个拜
24分钟前
2
0
SpringBoot项目如何访问jsp页面

1.添加pom依赖 首先在原来的pom文件基础上加上这两个配置 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:7877071...

编程SHA
53分钟前
3
0
nginx反向代理配置去除前缀

使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:...

架构师springboot
今天
7
0
QianBill API 开发笔记

JWT https://www.jianshu.com/p/6307c89fe3fa

BeanHo
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部