返回提交历史
Modified
docs/misc/sign/wbi.md
+57
-0
XFEstudio/bilibili-API-collect
添加Wbi签名的Java实现 (#722)
a874285
代码差异
1 个文件
+57
-0
@@ -422,3 +422,60 @@ func main() {
422
422
fmt.Println(string(body))
423
423
}
424
424
```
425
### Java
426
427
需要 `hutool` 依赖
428
429
```java
430
package com.example.demo;
431
432
import cn.hutool.crypto.SecureUtil;
433
434
import java.util.*;
435
436
public class WbiTest {
437
private static final int[] mixinKeyEncTab = new int[]{
438
46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49,
439
33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40,
440
61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11,
441
36, 20, 34, 44, 52
442
};
443
444
public static String getMixinKey(String imgKey, String subKey) {
445
String s = imgKey + subKey;
446
StringBuilder key = new StringBuilder();
447
for (int i = 0; i < 32; i++) {
448
key.append(s.charAt(mixinKeyEncTab[i]));
449
}
450
return key.toString();
451
}
452
453
public static void main(String[] args) {
454
String imgKey = "653657f524a547ac981ded72ea172057";
455
String subKey = "6e4909c702f846728e64f6007736a338";
456
String mixinKey = getMixinKey(imgKey, subKey);
457
System.out.println(mixinKey);
458
//72136226c6a73669787ee4fd02a74c27
459
//{
460
// foo: '114',
461
// bar: '514',
462
// zab: 1919810
463
//}
464
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
465
map.put("foo", "114");
466
map.put("bar", "514");
467
map.put("zab", 1919810);
468
map.put("wts", System.currentTimeMillis() / 1000);
469
StringJoiner param = new StringJoiner("&");
470
//排序 + 拼接字符串
471
map.entrySet().stream()
472
.sorted(Map.Entry.comparingByKey())
473
.forEach(entry -> param.add(entry.getKey() + "=" + entry.getValue().toString()));
474
String s = param + mixinKey;
475
String wbiSign = SecureUtil.md5(s);
476
System.out.println(wbiSign);
477
String finalParam = param + "&w_rid=" + wbiSign;
478
System.out.println(finalParam);
479
}
480
}
481
```