Files
netdisk-fast-download/parser/src/main/java/cn/qaiu/util/AcwScV2Generator.java
2025-09-28 13:38:58 +08:00

53 lines
1.5 KiB
Java

package cn.qaiu.util;
import java.util.Arrays;
public class AcwScV2Generator {
public static String acwScV2Simple(String arg1) {
// 映射表
int[] posList = {15,35,29,24,33,16,1,38,10,9,19,31,40,27,22,23,25,
13,6,11,39,18,20,8,14,21,32,26,2,30,7,4,17,5,3,
28,34,37,12,36};
String mask = "3000176000856006061501533003690027800375";
String[] outPutList = new String[40];
Arrays.fill(outPutList, "");
// 重排 arg1
for (int i = 0; i < arg1.length(); i++) {
char ch = arg1.charAt(i);
for (int j = 0; j < posList.length; j++) {
if (posList[j] == i + 1) {
outPutList[j] = String.valueOf(ch);
}
}
}
StringBuilder arg2 = new StringBuilder();
for (String s : outPutList) {
arg2.append(s);
}
// 按 mask 异或
StringBuilder result = new StringBuilder();
int length = Math.min(arg2.length(), mask.length());
for (int i = 0; i < length; i += 2) {
String strHex = arg2.substring(i, i + 2);
String maskHex = mask.substring(i, i + 2);
int strVal = Integer.parseInt(strHex, 16);
int maskVal = Integer.parseInt(maskHex, 16);
int xor = strVal ^ maskVal;
// 补齐 2 位小写 16 进制
result.append(String.format("%02x", xor));
}
return result.toString();
}
}