mirror of
https://github.com/SocialSisterYi/bilibili-API-collect.git
synced 2025-04-02 19:30:12 +08:00
添加Wbi签名的Java实现 (#726)
This commit is contained in:
parent
95efa217a8
commit
fd313b8c1c
@ -115,7 +115,7 @@
|
|||||||
|
|
||||||
## Wbi签名算法实现Demo
|
## Wbi签名算法实现Demo
|
||||||
|
|
||||||
该 Demo 提供 [Python](#Python)、[JavaScript](#JavaScript)、[Golang](#Golang)、[C#](#CSharp) 语言
|
该 Demo 提供 [Python](#Python)、[JavaScript](#JavaScript)、[Golang](#Golang)、[C#](#CSharp) 语言、[Java](#Java)
|
||||||
|
|
||||||
### Python
|
### Python
|
||||||
|
|
||||||
@ -518,4 +518,62 @@ class Program
|
|||||||
|
|
||||||
```
|
```
|
||||||
bar=514&baz=1919810&foo=114&wts=1687541921&w_rid=26e82b1b9b3a11dbb1807a9228a40d3b
|
bar=514&baz=1919810&foo=114&wts=1687541921&w_rid=26e82b1b9b3a11dbb1807a9228a40d3b
|
||||||
|
```
|
||||||
|
|
||||||
|
### Java
|
||||||
|
|
||||||
|
需要 `hutool` 依赖
|
||||||
|
|
||||||
|
```java
|
||||||
|
package com.example.demo;
|
||||||
|
|
||||||
|
import cn.hutool.crypto.SecureUtil;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class WbiTest {
|
||||||
|
private static final int[] mixinKeyEncTab = new int[]{
|
||||||
|
46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49,
|
||||||
|
33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40,
|
||||||
|
61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11,
|
||||||
|
36, 20, 34, 44, 52
|
||||||
|
};
|
||||||
|
|
||||||
|
public static String getMixinKey(String imgKey, String subKey) {
|
||||||
|
String s = imgKey + subKey;
|
||||||
|
StringBuilder key = new StringBuilder();
|
||||||
|
for (int i = 0; i < 32; i++) {
|
||||||
|
key.append(s.charAt(mixinKeyEncTab[i]));
|
||||||
|
}
|
||||||
|
return key.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String imgKey = "653657f524a547ac981ded72ea172057";
|
||||||
|
String subKey = "6e4909c702f846728e64f6007736a338";
|
||||||
|
String mixinKey = getMixinKey(imgKey, subKey);
|
||||||
|
System.out.println(mixinKey);
|
||||||
|
//72136226c6a73669787ee4fd02a74c27
|
||||||
|
//{
|
||||||
|
// foo: 'one one four',
|
||||||
|
// bar: '五一四',
|
||||||
|
// baz: 1919810
|
||||||
|
//}
|
||||||
|
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
|
||||||
|
map.put("foo", "one one four");
|
||||||
|
map.put("bar", "五一四");
|
||||||
|
map.put("baz", 1919810);
|
||||||
|
map.put("wts", System.currentTimeMillis() / 1000);
|
||||||
|
StringJoiner param = new StringJoiner("&");
|
||||||
|
//排序 + 拼接字符串
|
||||||
|
map.entrySet().stream()
|
||||||
|
.sorted(Map.Entry.comparingByKey())
|
||||||
|
.forEach(entry -> param.add(entry.getKey() + "=" + URLUtil.encode(entry.getValue().toString())));
|
||||||
|
String s = param + mixinKey;
|
||||||
|
String wbiSign = SecureUtil.md5(s);
|
||||||
|
System.out.println(wbiSign);
|
||||||
|
String finalParam = param + "&w_rid=" + wbiSign;
|
||||||
|
System.out.println(finalParam);
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
Loading…
Reference in New Issue
Block a user