网易云音乐登录信息加密算法详解
原文地址:网易云音乐新登录API分析
网易云音乐登录
加密算法
核心过程如下:
text = {'username': username,'password': password,'rememberLogin': 'true'}text = json.dumps(text)secKey = createSecretKey(16)encText = aesEncrypt(aesEncrypt(text, nonce), secKey)encSecKey = rsaEncrypt(secKey, pubKey, modulus)data = {'params': encText,'encSecKey': encSecKey}
其中modulus
、nonce
、pubKey
均为已知,算法先通过createSecretKey
生成一个16位的随机字符串作为密钥secKey
,然后将明文text
进行两次AES
加密获得密文encText
,因为secKey
是在客户端上生成的,所以还需要对其进行RSA
加密再传给服务端。
AES加密部分
AES加密的具体算法为: AES-128-CBC
,输出格式为 base64
AES加密时需要指定 iv:0102030405060708
AES加密时需要 padding
def aesEncrypt(text, secKey):pad = 16 - len(text) % 16text = text + pad * chr(pad)encryptor = AES.new(secKey, 2, '0102030405060708')ciphertext = encryptor.encrypt(text)ciphertext = base64.b64encode(ciphertext)return ciphertext
这里使用了pycrypto
,相比 nodejs
的 crypto
模块来说,需要手动做 padding
参考 stackoverflow
RSA 加密部分
RSA 加密采用非常规填充方式,既不是PKCS1
也不是PKCS1_OAEP
,网易的做法是直接向前补0
这样加密出来的密文有个特点:加密过程没有随机因素,明文多次加密后得到的密文是相同的
然而,我们常用的 RSA 加密模块均不支持此种加密,所以需要手写一段简单的 RSA 加密
加密过程 convertUtf8toHex(reversedText)^e%N
输入过程中需要对加密字符串进行 hex 格式转码
def rsaEncrypt(text, pubKey, modulus):text = text[::-1]rs = int(text.encode('hex'), 16)**int(pubKey, 16)%int(modulus, 16)return format(rs, 'x').zfill(256)
附录
需要的 modulus
、nonce
、pubKey
modulus = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
nonce = '0CoJUm6Qyw8W8jud'
pubKey = '010001'
Python 随机数生成
def createSecretKey(size):return (''.join(map(lambda xx: (hex(ord(xx))[2:]), os.urandom(size))))[0:16]
网易云音乐登录信息加密算法详解相关推荐
- 易语言网易云音乐登录post源码
易语言网易云音乐登录post源码 以下是部分源码: .版本 2 .支持库 dp1 data = 文本_替换 (#常量2, , , , "账号", 账号, "密码" ...
- 网易云音乐登录报错 status: 400, body: { code: -460, message: ‘网络太拥挤,请稍候再试!‘ } 解决
原因 在写网易云音乐项目的时候发现在浏览器请求登录接口,参数已经传入,并且信息是对的,前台页面报错 400 (Bad Request) 后端报错提示: 问题排查 去postman测试接口,发现同样的参 ...
- 如何利用python爬虫获取网易云音乐某个歌手简介_Python 爬虫获取网易云音乐歌手信息...
今天就先带大家爬取网易云音乐下的歌手信息并把数据保存下来. 爬取结果 环境 语言:Python 工具:Pycharm 导包 BeautifulSoup:用来解析源码,提取需要的元素. selenium ...
- 网易云音乐用户信息爬取以及可视化
选的课程方向是爬取网易云音乐某首歌曲的用户评论内容和评论时间,观察每天哪个时间段的评论信息最多,每周哪天的评论信息最多.然后分析该歌曲的用户性别分布和年龄分布.所以首先需要通过爬虫来爬取评论信息和用户 ...
- html制作网易云音乐登录系统,JavaScript实现[网易云音乐Web站登录窗口]拖拽功能...
说明 你可能发现有很多网站他们的登录窗口或者说是登录框是可以拖动的, 更有甚者他们的站点提示框都可以拖动, 你也许可能会对这个功能的实现感兴趣, 那么这篇文章可能会对你有所帮助!具体的网站示例以 网易 ...
- 网易云音乐登录python
网易云网页版登录例子 script.js这个算法有点长 就不发了有需要私聊我发你 # -*- coding: utf-8 -*- import re import requests import ex ...
- 【爬虫】六、综合案例之爬网易云音乐评论信息
1.需求 2.工具 pip install pycryptodomex #用Cryptodome.Cipher里的AES加密 3.url和参数以及加密过程查找 点栈元素,跳到sources,在光标处设 ...
- python第三方插件登录网易音乐_python3-使用requests模拟登录网易云音乐
# -*- coding: utf-8 -*- from Crypto.Cipher import AES import base64 import random import codecs impo ...
- 计算机中登录音乐在哪,网易云音乐扫一扫在哪里
网易云音乐扫一扫在哪里?网易云音乐是一款由网易官方推出的音乐播放软件,许多小伙伴不知道网易云音乐扫一扫在哪里,那么今天小编就为大家带来了网易云音乐扫一扫在哪里及怎么扫码登录电脑图文教程,希望本期内容可 ...
最新文章
- 计算机社团发展目标,计算机社团工作计划
- php中for循环流程图,PHP for循环
- 这 10 行比较字符串相等的代码给我整懵了,不信你也来看看
- C++ 工厂模式(设计模式)
- python3.x中pip升级报错
- 基于jquery实现的web版excel
- Deeping_Learning 02
- AI将png图片转换为矢量图并上传到阿里云iconfont
- 无线网络dns服务器是多少,中国移动宽带dns是多少?
- html实现粘性页脚
- R语言导出xlxs_R语言 数据Excel的导入与导出
- 图解PKCS#1——第五部分 附录Mask generation functions MGF1
- Linux开发学习笔记(二)
- xml中使用 报错:XML Parser Error on line 35: 在实体引用中, 实体名称必须紧跟在 ‘‘ 后面。
- #GD32F307VET6# 等位替代海威华芯HHD1705001
- 小字辈(左子右兄加强版)
- 转贴一首很感人的诗---孩子快抓紧妈妈的手
- 编写bat命令打开文件夹或者doc,txt文件
- BlackHat USA 2022议题解读:蓝牙Mesh中的安全攻击面
- SpringBoot导出数据到Excle中