加密:

import struct
msg_bytes = "the emperor has not been half-baked in the early days of the collapse of the road, today down three points, yizhou weakness, this serious crisis autumn".encode("utf8")
token = b"\x81" # + 数据长度/运算位 + mask/数据长度 + mask/数据 + 数据
length = len(msg_bytes)if length < 126:token += struct.pack("B", length)
elif length == 126:token += struct.pack("!BH", 126, length)
else:token += struct.pack("!BQ", 127, length)msg = token + msg_bytesprint(msg)

View Code

解密:

#b'\x81\x89\xf3\x99\x81-\x15\x05\x01\xcbO\x1be\x97]'
#b'\x81\x85s\x92a\x10\x1b\xf7\r|\x1c'
#b'\x81\x83H\xc0x\xa6y\xf2K'

hashstr = b'\x81\x85s\x92a\x10\x1b\xf7\r|\x1c'
# b'\x81 \x85s \x92a\x10\x1b\xf7  \r|\x1c' <126
# \x85s = 5
hashstr = b'\x81\xfe\x02\xdc\x8d\xe8-\xb2hm\xa5W5u\xc8:\x16\x0c\x95(kt\x87W\x00b\xc52\x01\x0c\x95\x1fdi\xbeW9A\xcb\x1c\x0f\x07\x91>iS\xa7W)A\xc9\n\x06\x0c\x95;h`\xab]1d\xca)\x07\r\x9a,j~\x9fW1b\xc2\x0e\x01\x0e\x80\x16eG\xb7W\x00Y\xcb2(\r\x80*iR\x8cV4c\xca\x15\x06\x0c\x94-nh\xafU\t^\xc9\x0c\x00\r\xa0\x19iQ\xa6Z\nK\xc9\n\x00\x0e\xaa:iR\xa3W\x0bm\xc2\x0e\x01\r\x92\x12hW\xbaV4c\xc8\x11&\r\x92*eR\x86V7f\xc8\x16\x1b\x00\xad7bT\xa1U\x16~\xc5\r0\r\xa8:hP\xb0V4c\xcb\x1c\x07\x01\xac5bT\xa1T!Z\xcb8(\x0c\x949iR\xa3[\x14s\xc9\n\x06\x0c\x94-nh\xafZ"r\xc8\x1c\x11\r\x912hT\x8dW\x11K\xc8"!\x07\x91>iS\x88W\x08a\xc87\x05\r\x95/di\xbaW3_\xc2\x0e\x01\x0e\xac\x10hT\xb5W2\x7f\xc8\x11&\x0c\x949kX\xb9]1d\xc9\n\x00\r\x83.hN\xa9Z\nB\xc5=?\x00\xbb6bT\xa1W1}\xc8$6\r\x89\x03iQ\xa4]1d\xc9\t(\r\x8c,hW\x8dZ=g\xc9\x0b\x06\x00\x9a\x1diQ\xb2Q\rj\xc8\x1c&\x0c\x95\x1fhR\xb1V5E\xc2\x0e\x01\x0c\x92\x03iP\x97V5h\xc9\x0f\x1e\x07\x91>dq\xb2U0r\xc55*\r\xbd\x14bT\xa1V5e\xc8\x1c\x11\r\x910hx\xa1Q\rj\xc59(\x0e\xb1;iU\xb1W(P\xca8"\x0f\x8a#hg\xa7V5R\xc8\r-\r\xbb6eh\xa8]1d\xc8\x1c\x11\x0c\x96*kt\xa4W\x02P\xc5\x1c7\r\xa8\x04h`\xbcZ8g\xc2\x0e\x01\x0c\x96\x17kp\x80[\x14s\xc9\n\x06\r\x94\x01kp\xa3V4c\xca"\x0b\x07\x91>iP\xa0W#t\xc83\x02\x0f\x8a3bT\xa1V0W\xc84\x08\r\x89$hT\xafT>}\xc9\x0b\x12\x0b\xad0iV\xa0V5E\xce2\x0c\x0c\x93?dk\xa3[\x0eE\xcb&5\x0c\x949nh\xacZ9Q\xca\x17\x03\x0b\xad3ey\x8eW\x08i\xca\x1f\x04\x07\x91>kE\x89U\x17n\xc5;"\r\x83,bT\xa1W2\x7f\xc5+\x1c\r\x92\x12jR\x82]1d\xcb*"\x0c\x96\x17hm\xa5W5u\xca\x1c\r\x0e\xa6&iS\x88[\x0c\x7f\xc4+\x16\x0c\x959nh\xafT\tr\xc9\t(\x0c\x95\x08hF\x86V5E\xc9\x0b\x06\x0c\x979bT\xa1V7c\xcb%-\r\x89\x15hX\xa2]1d\xcb0\x04\x0c\x96\x17hz\x85V4c\xc2\x0e\x01\x0f\xa9\x04hx\xa3T\x1bU\xc5\x13\x01\x07\x91>hW\xa8Z\x0eU\xc5\x11%\x00\x8c\x17dp\xb4T1g\xc2\x0e\x01\x0e\xb1;ka\xadW4W\xca)\x07\x0b\xad0'
# print(chushibiao[1],chushibiao[1]&127)
# print(chushibiao[2:4],chushibiao[4:8])
# 将第二个字节也就是 \x83 第9-16位 进行与127进行位运算
payload = hashstr[1] & 127
print(payload)
if payload == 127:extend_payload_len = hashstr[2:10]mask = hashstr[10:14]decoded = hashstr[14:]
# 当位运算结果等于127时,则第3-10个字节为数据长度
# 第11-14字节为mask 解密所需字符串
# 则数据为第15字节至结尾if payload == 126:extend_payload_len = hashstr[2:4]mask = hashstr[4:8]decoded = hashstr[8:]
# 当位运算结果等于126时,则第3-4个字节为数据长度
# 第5-8字节为mask 解密所需字符串
# 则数据为第9字节至结尾if payload <= 125:extend_payload_len = Nonemask = hashstr[2:6]decoded = hashstr[6:]# 当位运算结果小于等于125时,则这个数字就是数据的长度
# 第3-6字节为mask 解密所需字符串
# 则数据为第7字节至结尾

str_byte = bytearray()
# b'\x81 \x85s \x92a\x10\x1b \xf7\r|\x1c' <126
for i in range(len(decoded)): # 0  \xf7 ^ \x92a 1 \r ^ \x10 \x1c ^ \x1bbyte = decoded[i] ^ mask[i % 4]str_byte.append(byte)print(str_byte.decode("utf8"))

转载于:https://www.cnblogs.com/s593941/p/10269144.html

websocket的加密和解密过程相关推荐

  1. RSA加密算法加密与解密过程解析

    1.加密算法概述 加密算法根据内容是否可以还原分为可逆加密和非可逆加密. 可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密. 所谓对称加密即是指在加密和解密时使用的是同一个密钥 ...

  2. 记录一次寻4399加密信息解密过程

    记录一次寻4399加密信息解密过程 一.前提须知 在4399页面中,登录面板中输入了用户名和密码(随便输入,只是拿来试试解密),输入的用户名是:test ,密码:23232323: 4399网站采用的 ...

  3. python aes加密 cbc_Python实现AES的CBC模式加密和解密过程详解 和 chr() 函数 和 s[a:b:c] 和函数lambda...

    1.chr()函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 2.s[a:b:c] s=(1,2,3,4,5) 1>. s[a]下标访 ...

  4. php 破解加密帖子,某PHP加密文件解密过程初探 · 浮萍’s Blog

    最近在52PJ上看到一篇关于PHP加密解密的帖子,过程非常详细,而且作者很负责,对于别人的回答也很热心.跟着动手做了一下,记录一下遇到的问题.这里针对的是PHP加密网站的免费加密进行的调试. 采用的I ...

  5. mcrypt php 加密解密,mcrypt启用 加密以及解密过程详细解析

    Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原. 1.PHP加密扩展库Mcrypt安装在标准的PHP安装过程中并没有把Mrcypt安装上,但PHP的主目录下包含了libmc ...

  6. Java实现HTTPS加密、解密过程

    1.HTTPS握手过程模拟 以下文章来自:http://kingj.iteye.com/blog/2103662 1.1准备工作 1.创建java证书: C:\> keytool -genkey ...

  7. 【加密算法 AES256】AES256加密和解密过程

    AES是一种对称加密算法,对称指加密和解密使用同一个密钥: 256指密钥的长度是256bit,即32个英文字符的长度:密钥的长度决定了AES加密的轮数 # -*- coding: utf-8 -*-f ...

  8. websocket的加密和解密

    补充个小知识点:按位与运算 按位与运算是同位都为1才为1,有一个不为1就是0 websocket_hand 1 import socket, base64, hashlib 2 import webs ...

  9. 记录一次详细在线加密PDF解密过程

    发现了一个在线很好的教材PDF,但是阅读时候加密了,咋办?简单分析,解密该加密的在线PDF文档,并且下载解密. 事件 尝试 过程 成功 事件 在阅读一个在线PDF时候,出现了下面的情况.已经被加密了, ...

最新文章

  1. tomcat 如何实现共享jar
  2. 在Python中对子进程进行非阻塞读取
  3. Python开发入门与实战1-开发环境
  4. poj-2029 Get Many Persimmon Trees
  5. 每日一题(5) —— 逗号表达式
  6. 年薪50-80万 | 海南省崖州湾种子实验室海外优青招聘公告
  7. 7-2 简单计算器 (13 分)
  8. 10-10-010-简介-官网-官网翻译
  9. C#关于委托(基础)
  10. JS代码实现浏览器切换页面时网页标题动态切换
  11. 【转】eclipse 查看原始类出现The jar file rt.jar has no source attachment解决方法
  12. 分布式ID生成之雪花算法
  13. 初探VMware View 5.1
  14. 利用Python网络爬虫抓取韩寒博客推荐第一篇(urllib的简单使用与Beautifulsoup实战,i/o编程)
  15. 在 Mac 平台播放 H264 直播流
  16. 通过有限差分和matlab矩阵运算直接求解一维薛定谔方程,通过有限差分和MATLAB矩阵运算直接求解一维薛定谔方程...
  17. 茧数SCRM营销自动化的定位
  18. 深圳易商网怎样轻松搞定网站SEO优化?
  19. Docker 三剑客-------docker swam,visualizer监控、stack部署集群、Portainer可视化
  20. python(C)作业6 P110 2,4,12

热门文章

  1. 生成随机序列的算法c语言,一个C语言编写的不重复随机序列算法
  2. Linux bash 命令
  3. Linux 数据处理
  4. lru算法c语言实现单链表,基于单链表实现LRU算法
  5. mysql concat键值对_mysql中concat函数实现数据库字段合并查询
  6. 用FRP,内网端口映射到外网,记录
  7. Java工程师学习指南 中级篇
  8. 首都富版本更新说明文档
  9. There is no more space for virtual disk .vmdk.
  10. Java实现一个字符串的反转