module.exports = get_id;
function get_id(userAgent) {
function generate_sign() {
var webdriver = 'false'
var language = 'zh-CN'
var colorDepth = '24'
var deviceMemory = '8'
var pixelRatio = '4' // 1 or 4
var timezoneOffset = '-480'
var timezone = 'Asia/Shanghai'
var platform = 'Win32'
var plugins = 'PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Chrome PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Chromium PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Microsoft Edge PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,WebKit built-in PDF::Portable Document Format::application/pdf~pdf,text/pdf~pdf'
var canvas = 'canvas winding:yes~canvas fp:10cfbbb02b2606dbc2ccb15a3cd2b558'
var random_number = Math.random() * 124
var salt = 'hasaki'
return userAgent + '~~~' + webdriver + '~~~' + language + '~~~' + colorDepth + '~~~' + deviceMemory + '~~~' + pixelRatio + '~~~' + timezoneOffset + '~~~' + timezone + '~~~1~~~1~~~1~~~1~~~unknown~~~' + platform + '~~~' + plugins + '~~~' + canvas + '~~~false~~~false~~~false~~~false~~~false~~~0;false;false~~~4;7;8~~~' + random_number + salt;
}
function generate_id(sign) {
for (y = function (t) {
for (var e, n = t.length, r = n + 8, o = 16 * ((r - r % 64) / 64 + 1), i = Array(o - 1), a = 0, c = 0; c < n;)
a = c % 4 * 8,
i[e = (c - c % 4) / 4] = i[e] | t.charCodeAt(c) << a,
c++;
return a = c % 4 * 8,
i[e = (c - c % 4) / 4] = i[e] | 128 << a,
i[o - 2] = n << 3,
i[o - 1] = n >>> 29,
i
}(function (t) {
t = t.replace(/\r\n/g, "\n");
for (var e = "", n = 0; n < t.length; n++) {
var r = t.charCodeAt(n);
r < 128 ? e += String.fromCharCode(r) : (127 < r && r < 2048 ? e += String.fromCharCode(r >> 6 | 192) : (e += String.fromCharCode(r >> 12 | 224),
e += String.fromCharCode(r >> 6 & 63 | 128)),
e += String.fromCharCode(63 & r | 128))
}
return e
}(sign)),
d = 1732584193,
v = 4023233417,
h = 2562383102,
g = 271733878,
a = 0;
a < y.length;
a += 16)
d = o(d = r(d = r(d = r(d = r(d = n(d = n(d = n(d = n(d = e(d = e(d = e(d = e(s = d, f = v, l = h, p = g, y[a + 0], 7, 3614090360), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 1], 12, 3905402710), d, v, y[a + 2], 17, 606105819), g, d, y[a + 3], 22, 3250441966), h, g, y[a + 4], 7, 4118548399), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 5], 12, 1200080426), d, v, y[a + 6], 17, 2821735955), g, d, y[a + 7], 22, 4249261313), h, g, y[a + 8], 7, 1770035416), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 9], 12, 2336552879), d, v, y[a + 10], 17, 4294925233), g, d, y[a + 11], 22, 2304563134), h, g, y[a + 12], 7, 1804603682), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 13], 12, 4254626195), d, v, y[a + 14], 17, 2792965006), g, d, y[a + 15], 22, 1236535329), h, g, y[a + 1], 5, 4129170786), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 6], 9, 3225465664), d, v, y[a + 11], 14, 643717713), g, d, y[a + 0], 20, 3921069994), h, g, y[a + 5], 5, 3593408605), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 10], 9, 38016083), d, v, y[a + 15], 14, 3634488961), g, d, y[a + 4], 20, 3889429448), h, g, y[a + 9], 5, 568446438), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 14], 9, 3275163606), d, v, y[a + 3], 14, 4107603335), g, d, y[a + 8], 20, 1163531501), h, g, y[a + 13], 5, 2850285829), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 2], 9, 4243563512), d, v, y[a + 7], 14, 1735328473), g, d, y[a + 12], 20, 2368359562), h, g, y[a + 5], 4, 4294588738), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 8], 11, 2272392833), d, v, y[a + 11], 16, 1839030562), g, d, y[a + 14], 23, 4259657740), h, g, y[a + 1], 4, 2763975236), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 4], 11, 1272893353), d, v, y[a + 7], 16, 4139469664), g, d, y[a + 10], 23, 3200236656), h, g, y[a + 13], 4, 681279174), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 0], 11, 3936430074), d, v, y[a + 3], 16, 3572445317), g, d, y[a + 6], 23, 76029189), h, g, y[a + 9], 4, 3654602809), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 12], 11, 3873151461), d, v, y[a + 15], 16, 530742520), g, d, y[a + 2], 23, 3299628645), h, g, y[a + 0], 6, 4096336452),
v = o(v = o(v = o(v = o(v, h = o(h, g = o(g, d, v, h, y[a + 7], 10, 1126891415), d, v, y[a + 14], 15, 2878612391), g, d, y[a + 5], 21, 4237533241), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 12], 6, 1700485571), v, h, y[a + 3], 10, 2399980690), d, v, y[a + 10], 15, 4293915773), g, d, y[a + 1], 21, 2240044497), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 8], 6, 1873313359), v, h, y[a + 15], 10, 4264355552), d, v, y[a + 6], 15, 2734768916), g, d, y[a + 13], 21, 1309151649), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 4], 6, 4149444226), v, h, y[a + 11], 10, 3174756917), d, v, y[a + 2], 15, 718787259), g, d, y[a + 9], 21, 3951481745),
d = u(d, s),
v = u(v, f),
h = u(h, l),
g = u(g, p);
return (i(d) + i(v) + i(h) + i(g)).toLowerCase()
}
function u(t, e) {
var n, r, o, i, a;
return o = 2147483648 & t,
i = 2147483648 & e,
a = (1073741823 & t) + (1073741823 & e), (n = 1073741824 & t) & (r = 1073741824 & e) ? 2147483648 ^ a ^ o ^ i : n | r ? 1073741824 & a ? 3221225472 ^ a ^ o ^ i : 1073741824 ^ a ^ o ^ i : a ^ o ^ i
}
function i(t) {
var e, n = "",
r = "";
for (e = 0; e <= 3; e++)
n += (r = "0" + (t >>> 8 * e & 255).toString(16)).substr(r.length - 2, 2);
return n
}
function o(t, e, n, r, o, i, a) {
return u(c(t = u(t, u(u(n ^ (e | ~r), o), a)), i), e)
}
function e(t, e, n, r, o, i, a) {
return u(c(t = u(t, u(u(e & n | ~e & r, o), a)), i), e)
}
function n(t, e, n, r, o, i, a) {
return u(c(t = u(t, u(u(e & r | n & ~r, o), a)), i), e)
}
function r(t, e, n, r, o, i, a) {
return u(c(t = u(t, u(u(e ^ n ^ r, o), a)), i), e)
}
function c(t, e) {
return t << e | t >>> 32 - e
}
var sign = generate_sign()
return generate_id(sign)
}
```javascript
```
import java.security.MessageDigest;
import java.math.BigInteger;
class Test{
public static String generateHash(String input){
try {
if (null == input) {
return null;
}
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(input.getBytes());
byte[] digest = md.digest();
BigInteger bi = new BigInteger(1, digest);
String hashText = bi.toString(16);
while(hashText.length() < 32){
hashText = "0" + hashText;
}
return hashText;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String get_id(String userAgent){
String webdriver = "false";
String language = "zh-CN";
String colorDepth = "24";
String deviceMemory = "8";
String pixelRatio = "4"; // 1 or 4
String timezoneOffset = "-480";
String timezone = "Asia/Shanghai";
String platform = "Win32";
String plugins = "PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Chrome PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Chromium PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Microsoft Edge PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,WebKit built-in PDF::Portable Document Format::application/pdf~pdf,text/pdf~pdf";
String canvas = "canvas winding:yes~canvas fp:10cfbbb02b2606dbc2ccb15a3cd2b558";
String random_number = ""+Math.random() * 124;
String salt = "hasaki";
String sign = userAgent + "~~~" + webdriver + "~~~" + language + "~~~" + colorDepth + "~~~" + deviceMemory + "~~~" + pixelRatio + "~~~" + timezoneOffset + "~~~" + timezone + "~~~1~~~1~~~1~~~1~~~unknown~~~" + platform + "~~~" + plugins + "~~~" + canvas + "~~~false~~~false~~~false~~~false~~~false~~~0;false;false~~~4;7;8~~~" + random_number + salt;
return generateHash(sign);
}
public static void main(String args[]){
System.out.println(get_id("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"));
}
}
其实那一长串js的加密代码就是md5的实现而已,等同于crypto.createHash('MD5').update(sign).degest('hex')
有人吗
看样子是个生成id的方法
前面字符串拼接没啥难度,后面一大串对字符串加密的,想对称就用对称加密的算法,不想不对称就用非对称加密的算法,java里有现成的加密方法直接调用就可以,不用自己去算
通过Java的第三方支持或者Jar调用JavaScript函数实现:
1。读取JavaScript文件,2。构建JavaScript环境(类似于浏览器编译脚本),3。执行函数返回结果。
private static final String JS_FILE_PATH = "D:\\xxxxx.js"; // 读取js文件
private static final ScriptEngineManager manager = new ScriptEngineManager();
private static final String ENCRYPT_METHOD = "EncryptAPin";
public static String encrypt(String pwd){
FileReader reader = null;
try {
ScriptEngine engine = manager.getEngineByName("javascript");
reader = new FileReader(JS_FILE_PATH); // 执行指定脚本
engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine;
return (String) invoke.invokeFunction(ENCRYPT_METHOD, pwd);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
reader = null;
}
}
}
return StringUtils.EMPTY;
}
转换后的代码如下:
public class Answer7677898 {
public static void main(String[] args) {
String userAgent = "xxxxx";
System.out.println(get_id(userAgent));
}
public static String get_id(String userAgent) {
String sign = generate_sign(userAgent);
return generate_id(sign);
}
private static String generate_sign(String userAgent) {
String webdriver = "false";
String language = "zh-CN";
String colorDepth = "24";
String deviceMemory = "8";
String pixelRatio = "4"; // 1 or 4
String timezoneOffset = "-480";
String timezone = "Asia/Shanghai";
String platform = "Win32";
String plugins = "PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Chrome PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Chromium PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,Microsoft Edge PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf,WebKit built-in PDF::Portable Document Format::application/pdf~pdf,text/pdf~pdf";
String canvas = "canvas winding:yes~canvas fp:10cfbbb02b2606dbc2ccb15a3cd2b558";
String random_number = String.valueOf(Math.random() * 124);
String salt = "hasaki";
return userAgent + "~~~" + webdriver + "~~~" + language + "~~~" + colorDepth + "~~~" + deviceMemory + "~~~" + pixelRatio + "~~~" + timezoneOffset + "~~~" + timezone + "~~~1~~~1~~~1~~~1~~~unknown~~~" + platform + "~~~" + plugins + "~~~" + canvas + "~~~false~~~false~~~false~~~false~~~false~~~0;false;false~~~4;7;8~~~" + random_number + salt;
}
private static String generate_id(String sign) {
Function<String, String> func1 = (t) -> {
t = t.replace("\r\n", "\n");
String e;
int n;
for (e = "", n = 0; n < t.length(); n++) {
byte r = (byte) t.charAt(n);
if (r < 128) {
e += String.valueOf(r);
} else {
if (127 < r && r < 2048) {
e += String.valueOf(r >> 6 | 192);
} else {
e += String.valueOf(r >> 12 | 224);
e += String.valueOf(r >> 6 & 63 | 128);
}
e += String.valueOf(63 & r | 128);
}
}
return e;
};
String result1 = func1.apply(sign);
Function<String, long[]> func2 = (t) -> {
int e, n, r, o, a, c;
long[] i;
for (e = 0, n = t.length(), r = n + 8, o = 16 * ((r - r % 64) / 64 + 1), i = new long[o], a = 0, c = 0; c < n; ) {
a = c % 4 * 8;
i[e = (c - c % 4) / 4] = i[e] | t.charAt(c) << a;
c++;
}
a = c % 4 * 8;
i[e = (c - c % 4) / 4] = i[e] | 128 << a;
i[o - 2] = n << 3;
i[o - 1] = n >>> 29;
return i;
};
long[] result2 = func2.apply(result1);
long[] y;
int a;
long d, v, h, g, s, f, l, p;
for (y = result2, d = 1732584193, v = 4023233417L, h = 2562383102L, g = 271733878, a = 0; a < y.length; a += 16) {
d = o(d = r(d = r(d = r(d = r(d = n(d = n(d = n(d = n(d = e(d = e(d = e(d = e(s = d, f = v, l = h, p = g, y[a + 0], 7, 3614090360L), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 1], 12, 3905402710L), d, v, y[a + 2], 17, 606105819), g, d, y[a + 3], 22, 3250441966L), h, g, y[a + 4], 7, 4118548399L), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 5], 12, 1200080426), d, v, y[a + 6], 17, 2821735955L), g, d, y[a + 7], 22, 4249261313L), h, g, y[a + 8], 7, 1770035416), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 9], 12, 2336552879L), d, v, y[a + 10], 17, 4294925233L), g, d, y[a + 11], 22, 2304563134L), h, g, y[a + 12], 7, 1804603682), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 13], 12, 4254626195L), d, v, y[a + 14], 17, 2792965006L), g, d, y[a + 15], 22, 1236535329), h, g, y[a + 1], 5, 4129170786L), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 6], 9, 3225465664L), d, v, y[a + 11], 14, 643717713), g, d, y[a + 0], 20, 3921069994L), h, g, y[a + 5], 5, 3593408605L), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 10], 9, 38016083), d, v, y[a + 15], 14, 3634488961L), g, d, y[a + 4], 20, 3889429448L), h, g, y[a + 9], 5, 568446438), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 14], 9, 3275163606L), d, v, y[a + 3], 14, 4107603335L), g, d, y[a + 8], 20, 1163531501), h, g, y[a + 13], 5, 2850285829L), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 2], 9, 4243563512L), d, v, y[a + 7], 14, 1735328473), g, d, y[a + 12], 20, 2368359562L), h, g, y[a + 5], 4, 4294588738L), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 8], 11, 2272392833L), d, v, y[a + 11], 16, 1839030562), g, d, y[a + 14], 23, 4259657740L), h, g, y[a + 1], 4, 2763975236L), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 4], 11, 1272893353), d, v, y[a + 7], 16, 4139469664L), g, d, y[a + 10], 23, 3200236656L), h, g, y[a + 13], 4, 681279174), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 0], 11, 3936430074L), d, v, y[a + 3], 16, 3572445317L), g, d, y[a + 6], 23, 76029189), h, g, y[a + 9], 4, 3654602809L), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 12], 11, 3873151461L), d, v, y[a + 15], 16, 530742520), g, d, y[a + 2], 23, 3299628645L), h, g, y[a + 0], 6, 4096336452L);
v = o(v = o(v = o(v = o(v, h = o(h, g = o(g, d, v, h, y[a + 7], 10, 1126891415), d, v, y[a + 14], 15, 2878612391L), g, d, y[a + 5], 21, 4237533241L), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 12], 6, 1700485571), v, h, y[a + 3], 10, 2399980690L), d, v, y[a + 10], 15, 4293915773L), g, d, y[a + 1], 21, 2240044497L), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 8], 6, 1873313359), v, h, y[a + 15], 10, 4264355552L), d, v, y[a + 6], 15, 2734768916L), g, d, y[a + 13], 21, 1309151649), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 4], 6, 4149444226L), v, h, y[a + 11], 10, 3174756917L), d, v, y[a + 2], 15, 718787259), g, d, y[a + 9], 21, 3951481745L);
d = u(d, s);
v = u(v, f);
h = u(h, l);
g = u(g, p);
}
return (i(d) + i(v) + i(h) + i(g)).toLowerCase();
}
private static long u(long t, long e) {
long n, r, o, i, a;
o = 2147483648L & t;
i = 2147483648L & e;
a = (1073741823 & t) + (1073741823 & e);
if (((n = 1073741824 & t) & (r = 1073741824 & e)) != 0) {
return 2147483648L ^ a ^ o ^ i;
}
if ((n | r) != 0) {
if ((1073741824 & a) != 0) {
return 3221225472L ^ a ^ o ^ i;
}
return 1073741824 ^ a ^ o ^ i;
}
return a ^ o ^ i;
}
private static String i(long t) {
int e;
String n = "", r = "";
for (e = 0; e <= 3; e++) {
n += (r = "0" + Long.toHexString(t >>> 8 * e & 255)).substring(r.length() - 2, 2);
}
return n;
}
private static long o(long t, long e, long n, long r, long o, long i, long a) {
return u(c(t = u(t, u(u(n ^ (e | ~r), o), a)), i), e);
}
private static long e(long t, long e, long n, long r, long o, long i, long a) {
return u(c(t = u(t, u(u(e & n | ~e & r, o), a)), i), e);
}
private static long n(long t, long e, long n, long r, long o, long i, long a) {
return u(c(t = u(t, u(u(e & r | n & ~r, o), a)), i), e);
}
private static long r(long t, long e, long n, long r, long o, long i, long a) {
return u(c(t = u(t, u(u(e ^ n ^ r, o), a)), i), e);
}
private static long c(long t, long e) {
return t << e | t >>> 32 - e;
}
}
可以直接运行main函数查看运行结果:
Connected to the target VM, address: '127.0.0.1:32818', transport: 'socket'
9893be7c40a699a5d
Disconnected from the target VM, address: '127.0.0.1:32818', transport: 'socket'
Process finished with exit code 0
花了很久时间,终于调试通过。
如有问题,欢迎继续沟通。
如有帮助,请采纳!
看懂啥意思,直接用Java写不行吗
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!不明白你要表达什么
照着用java语法抄就是