mirror of
https://github.com/SocialSisterYi/bilibili-API-collect.git
synced 2025-02-07 01:30:07 +08:00
添加密码加密的Java实现 (#498)
Co-authored-by: 社会易姐QwQ <45892418+SocialSisterYi@users.noreply.github.com>
This commit is contained in:
parent
1be69566cc
commit
94f2018ab4
@ -48,7 +48,7 @@ SSO登录页面跳转()
|
|||||||
根对象:
|
根对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ------- | ---- | -------- | ------- |
|
|---------|-----|------|------|
|
||||||
| code | num | 返回值 | 0:成功 |
|
| code | num | 返回值 | 0:成功 |
|
||||||
| message | str | 错误信息 | |
|
| message | str | 错误信息 | |
|
||||||
| ttl | num | 1 | |
|
| ttl | num | 1 | |
|
||||||
@ -57,7 +57,7 @@ SSO登录页面跳转()
|
|||||||
`data`对象:
|
`data`对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | -------- | ------------------------------------------------------------ |
|
|------|-----|--------|------------------------------------------|
|
||||||
| hash | str | 密码盐值 | 有效时间为 20s<br />恒为 16 字符<br />需要拼接在明文密码之前 |
|
| hash | str | 密码盐值 | 有效时间为 20s<br />恒为 16 字符<br />需要拼接在明文密码之前 |
|
||||||
| key | str | rsa 公钥 | PEM 格式编码<br />加密密码时需要使用 |
|
| key | str | rsa 公钥 | PEM 格式编码<br />加密密码时需要使用 |
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ curl 'http://passport.bilibili.com/x/passport-login/web/key'
|
|||||||
根对象:
|
根对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ------- | ----------------------------- | -------- | ------------------------------------------------------------ |
|
|---------|-----------------------|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| code | num | 返回值 | 0:成功<br />-105:验证码错误<br />-400:请求错误<br />-629:账号或密码错误<br />-653:用户名或密码不能为空<br />-662:提交超时,请重新提交<br />-2001:缺少必要的的参数<br />-2100:需验证手机号或邮箱<br />2400:登录秘钥错误<br />2406:验证极验服务出错<br />86000:RSA解密失败 |
|
| code | num | 返回值 | 0:成功<br />-105:验证码错误<br />-400:请求错误<br />-629:账号或密码错误<br />-653:用户名或密码不能为空<br />-662:提交超时,请重新提交<br />-2001:缺少必要的的参数<br />-2100:需验证手机号或邮箱<br />2400:登录秘钥错误<br />2406:验证极验服务出错<br />86000:RSA解密失败 |
|
||||||
| message | str | 错误信息 | |
|
| message | str | 错误信息 | |
|
||||||
| data | 成功时:obj<br />失败时:null | 数据本体 | |
|
| data | 成功时:obj<br />失败时:null | 数据本体 | |
|
||||||
@ -122,7 +122,7 @@ curl 'http://passport.bilibili.com/x/passport-login/web/key'
|
|||||||
data 对象:
|
data 对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ------------- | ---- | -------------------- | ---------------------------------- |
|
|---------------|-----|-------------------|------------------------|
|
||||||
| message | str | 扫码状态信息 | |
|
| message | str | 扫码状态信息 | |
|
||||||
| refresh_token | str | 刷新`refresh_token` | |
|
| refresh_token | str | 刷新`refresh_token` | |
|
||||||
| status | num | 0 | |
|
| status | num | 0 | |
|
||||||
@ -174,7 +174,6 @@ curl 'http://passport.bilibili.com/x/passport-login/web/login' \
|
|||||||
<details>
|
<details>
|
||||||
<summary>查看响应示例:</summary>
|
<summary>查看响应示例:</summary>
|
||||||
|
|
||||||
|
|
||||||
```http
|
```http
|
||||||
HTTP/1.1 200 OK
|
HTTP/1.1 200 OK
|
||||||
Date: Mon, 13 Jul 2020 06:56:00 GMT
|
Date: Mon, 13 Jul 2020 06:56:00 GMT
|
||||||
@ -209,7 +208,7 @@ X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01
|
|||||||
根对象:
|
根对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
|---------|-----|--------|-----------------|
|
|------|-----|--------|------------------------------------------|
|
||||||
| hash | str | 密码盐值 | 有效时间为 20s<br />恒为 16 字符<br />需要拼接在明文密码之前 |
|
| hash | str | 密码盐值 | 有效时间为 20s<br />恒为 16 字符<br />需要拼接在明文密码之前 |
|
||||||
| key | str | rsa 公钥 | PEM 格式编码<br />加密密码时需要使用 |
|
| key | str | rsa 公钥 | PEM 格式编码<br />加密密码时需要使用 |
|
||||||
|
|
||||||
@ -244,6 +243,7 @@ curl 'http://passport.bilibili.com/login?act=getkey'
|
|||||||
|
|
||||||
**正文参数 (application/x-www-form-urlencoded ):**
|
**正文参数 (application/x-www-form-urlencoded ):**
|
||||||
|
|
||||||
|
|
||||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||||
| ----------- | ---- | ---------------------- | ------ | ------------------------------------------------------------ |
|
| ----------- | ---- | ---------------------- | ------ | ------------------------------------------------------------ |
|
||||||
| captchaType | num | 6 | 必要 | 必须为`6` |
|
| captchaType | num | 6 | 必要 | 必须为`6` |
|
||||||
@ -262,7 +262,7 @@ curl 'http://passport.bilibili.com/login?act=getkey'
|
|||||||
根对象:
|
根对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ------- | ---- | ---------- | ------------------------------------------------------------ |
|
|---------|-----|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| code | num | 返回值 | 0:成功<br />-400:请求错误<br />-629:账号或密码错误<br />-653:用户名或密码不能为空<br />-662:提交超时,请重新提交<br />-2001:缺少必要的的参数<br />-2100:需验证手机号或邮箱<br />2400:登录秘钥错误<br />2406:验证极验服务出错<br />86000:RSA解密失败 |
|
| code | num | 返回值 | 0:成功<br />-400:请求错误<br />-629:账号或密码错误<br />-653:用户名或密码不能为空<br />-662:提交超时,请重新提交<br />-2001:缺少必要的的参数<br />-2100:需验证手机号或邮箱<br />2400:登录秘钥错误<br />2406:验证极验服务出错<br />86000:RSA解密失败 |
|
||||||
| ts | num | 当前时间戳 | 成功时无此项 |
|
| ts | num | 当前时间戳 | 成功时无此项 |
|
||||||
| message | str | 错误信息 | 默认为0 |
|
| message | str | 错误信息 | 默认为0 |
|
||||||
@ -273,20 +273,20 @@ curl 'http://passport.bilibili.com/login?act=getkey'
|
|||||||
**未登录时:**
|
**未登录时:**
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ----------- | ---- | -------------------- | ---- |
|
|-------------|-----|--------------|-----|
|
||||||
| redirectUrl | str | 游戏分站跨域登录 url | |
|
| redirectUrl | str | 游戏分站跨域登录 url | |
|
||||||
|
|
||||||
**已登录时:**
|
**已登录时:**
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ------- | ---- | ------------------------ | ---- |
|
|---------|------|--------------------------|-----|
|
||||||
| isLogin | bool | true | |
|
| isLogin | bool | true | |
|
||||||
| goUrl | str | https://www.bilibili.com | |
|
| goUrl | str | https://www.bilibili.com | |
|
||||||
|
|
||||||
**需验证手机号或邮箱时**
|
**需验证手机号或邮箱时**
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| -------- | ---- | ------------------------ | ---------------- |
|
|----------|-----|--------------------------|------------|
|
||||||
| mid | num | 用户 mid | |
|
| mid | num | 用户 mid | |
|
||||||
| tel | str | 绑定的手机号 | 星号隐藏部分信息 |
|
| tel | str | 绑定的手机号 | 星号隐藏部分信息 |
|
||||||
| email | str | 绑定的邮箱 | 星号隐藏部分信息 |
|
| email | str | 绑定的邮箱 | 星号隐藏部分信息 |
|
||||||
@ -332,7 +332,6 @@ curl 'https://passport.bilibili.com/web/login/v2' \
|
|||||||
<details>
|
<details>
|
||||||
<summary>查看响应示例:</summary>
|
<summary>查看响应示例:</summary>
|
||||||
|
|
||||||
|
|
||||||
```http
|
```http
|
||||||
HTTP/1.1 200 OK
|
HTTP/1.1 200 OK
|
||||||
Date: Mon, 13 Jul 2020 06:56:00 GMT
|
Date: Mon, 13 Jul 2020 06:56:00 GMT
|
||||||
@ -365,7 +364,7 @@ X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01
|
|||||||
**正文参数( application/x-www-form-urlencoded ):**
|
**正文参数( application/x-www-form-urlencoded ):**
|
||||||
|
|
||||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||||
| ------ | ---- | ------- | ----------- | ---- |
|
|--------|-----|-------|---------|-----|
|
||||||
| appkey | str | APP密钥 | APP方式必要 | |
|
| appkey | str | APP密钥 | APP方式必要 | |
|
||||||
| sign | str | APP签名 | APP方式必要 | |
|
| sign | str | APP签名 | APP方式必要 | |
|
||||||
|
|
||||||
@ -374,7 +373,7 @@ X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01
|
|||||||
根对象:
|
根对象:
|
||||||
|
|
||||||
| 字段 | 类型 | 内容 | 备注 |
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
| ---- | ---- | -------- | ------------------------------------------------------------ |
|
|------|-----|--------|------------------------------------------|
|
||||||
| hash | str | 密码盐值 | 有效时间为 20s<br />恒为 16 字符<br />需要拼接在明文密码之前 |
|
| hash | str | 密码盐值 | 有效时间为 20s<br />恒为 16 字符<br />需要拼接在明文密码之前 |
|
||||||
| key | str | rsa 公钥 | PEM 格式编码<br />加密密码时需要使用 |
|
| key | str | rsa 公钥 | PEM 格式编码<br />加密密码时需要使用 |
|
||||||
|
|
||||||
@ -463,3 +462,38 @@ print('result =', b64Password)
|
|||||||
result = fZzUzYiSp96F26tt19MIAkB4b4Wk4RHQb4ADLiTIbL66O/7upyj4U5UekTA2pB3Pjr6NlEGGc/kiEgwTNbu84d4bkAkpUOupj1hZXYMYgWYKOtvhvugeuhwgRDhkfUIX+YrwaScxpcQFJqo7bvh7oDL/Wc5sVdWvikpL3PFAvJM=
|
result = fZzUzYiSp96F26tt19MIAkB4b4Wk4RHQb4ADLiTIbL66O/7upyj4U5UekTA2pB3Pjr6NlEGGc/kiEgwTNbu84d4bkAkpUOupj1hZXYMYgWYKOtvhvugeuhwgRDhkfUIX+YrwaScxpcQFJqo7bvh7oDL/Wc5sVdWvikpL3PFAvJM=
|
||||||
```
|
```
|
||||||
|
|
||||||
|
以下为密码加密的Java实现:
|
||||||
|
|
||||||
|
```java
|
||||||
|
package com.ho.test;
|
||||||
|
|
||||||
|
import cn.hutool.core.codec.Base64;
|
||||||
|
|
||||||
|
import javax.crypto.Cipher;
|
||||||
|
import java.security.KeyFactory;
|
||||||
|
import java.security.PublicKey;
|
||||||
|
import java.security.spec.X509EncodedKeySpec;
|
||||||
|
|
||||||
|
public class Test3 {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
//用户密码
|
||||||
|
String password = "abcdef";
|
||||||
|
//获取到的证书内容
|
||||||
|
String key = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n";
|
||||||
|
//获取到的盐值
|
||||||
|
String hash = "bb73382121594c46";
|
||||||
|
String[] split = key.strip().split("\n");
|
||||||
|
String newKey = split[1] + split[2] + split[3] + split[4];
|
||||||
|
//进行加密
|
||||||
|
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
|
||||||
|
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.decode(newKey));
|
||||||
|
PublicKey publicKey = keyFactory.generatePublic(keySpec);
|
||||||
|
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
|
||||||
|
cipher.init(Cipher.PUBLIC_KEY, publicKey);
|
||||||
|
byte[] bytes = cipher.doFinal((hash + password).getBytes());
|
||||||
|
String encode = Base64.encode(bytes);
|
||||||
|
System.out.println(encode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user