• Linux
  • apache
  • centos
  • Git版本管理
  • Linux基本命令
  • linux配置与优化
  • Nginx
  • PHP
  • Redis
  • Supervisor
  • Swoole
  • windows
  • THINKPHP
  • 开发者手册
  • Chat GPT / Open Ai
  • Google Translate的tk生成以及参数详情

    全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:925篇文章
  • 发布时间:2022年05月04日 22:33:40
  • 所属分类:javascript
  • 阅读次数:910次阅读
  • 标签:
  • http://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=utf-8&oe=utf-8&source=btn&ssel=0&tsel=0&kc=0&tk=911980.765353&q=%E4%BD%A0%E5%A5%BD

    tk加密过的 且不能随意修改,一个tk是通过翻译的文本加密而来, 下面是加密js

    var TKK = ((function() {
    var a = 561666268;
    var b = 1526272306;
    return 406398 + '.' + (a + b);
    })());
    function b(a, b) {
    for (var d = 0; d < b.length - 2; d += 3) {
    var c = b.charAt(d + 2),
    c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),
    c = "+" == b.charAt(d + 1) ? a >>> c : a << c;
    a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c
    }
    return a
    }
    function tk(a) {
    for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {
    var c = a.charCodeAt(f);
    128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)
    }
    a = h;
    for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");
    a = b(a, "+-3^+b+-f");
    a ^= Number(e[1]) || 0;
    0 > a && (a = (a & 2147483647) + 2147483648);
    a %= 1E6;
    return a.toString() + "." + (a ^ h)
    }

    或者下面未加密的js代码

    function shiftLeftOrRightThenSumOrXor(num, opArray) {
    return opArray.reduce((acc, opString) => {
    var op1 = opString[1];    //    '+' | '-' ~ SUM | XOR
    var op2 = opString[0];    //    '+' | '^' ~ SLL | SRL
    var xd = opString[2];    //    [0-9a-f]
    var shiftAmount = hexCharAsNumber(xd);
    var mask = (op1 == '+') ? acc >>> shiftAmount : acc << shiftAmount;
    return (op2 == '+') ? (acc + mask & 0xffffffff) : (acc ^ mask);
    }, num);
    }
    function hexCharAsNumber(xd) {
    return (xd >= 'a') ? xd.charCodeAt(0) - 87 : Number(xd);
    }
    function transformQuery(query) {
    for (var e = [], f = 0, g = 0; g < query.length; g++) {
    var l = query.charCodeAt(g);
    if (l < 128) {
    e[f++] = l;                    //    0{l[6-0]}
    } else if (l < 2048) {
    e[f++] = l >> 6 | 0xC0;        //    110{l[10-6]}
    e[f++] = l & 0x3F | 0x80;    //    10{l[5-0]}
    } else if (0xD800 == (l & 0xFC00) && g + 1 < query.length && 0xDC00 == (query.charCodeAt(g + 1) & 0xFC00)) {
    //    that's pretty rare... (avoid ovf?)
    l = (1 << 16) + ((l & 0x03FF) << 10) + (query.charCodeAt(++g) & 0x03FF);
    e[f++] = l >> 18 | 0xF0;        //    111100{l[9-8*]}
    e[f++] = l >> 12 & 0x3F | 0x80;    //    10{l[7*-2]}
    e[f++] = l & 0x3F | 0x80;        //    10{(l+1)[5-0]}
    } else {
    e[f++] = l >> 12 | 0xE0;        //    1110{l[15-12]}
    e[f++] = l >> 6 & 0x3F | 0x80;    //    10{l[11-6]}
    e[f++] = l & 0x3F | 0x80;        //    10{l[5-0]}
    }
    }
    return e;
    }
    function normalizeHash(encondindRound2) {
    if (encondindRound2 < 0) {
    encondindRound2 = (encondindRound2 & 0x7fffffff) + 0x80000000;
    }
    return encondindRound2 % 1E6;
    }
    function calcHash(query, windowTkk) {
    //    STEP 1: spread the the query char codes on a byte-array, 1-3 bytes per char
    var bytesArray = transformQuery(query);
    //    STEP 2: starting with TKK index, add the array from last step one-by-one, and do 2 rounds of shift+add/xor
    var d = windowTkk.split('.');
    var tkkIndex = Number(d[0]) || 0;
    var tkkKey = Number(d[1]) || 0;
    var encondingRound1 = bytesArray.reduce((acc, current) => {
    acc += current;
    return shiftLeftOrRightThenSumOrXor(acc, ['+-a', '^+6'])
    }, tkkIndex);
    //    STEP 3: apply 3 rounds of shift+add/xor and XOR with they TKK key
    var encondingRound2 = shiftLeftOrRightThenSumOrXor(encondingRound1, ['+-3', '^+b', '+-f']) ^ tkkKey;
    //    STEP 4: Normalize to 2s complement & format
    var normalizedResult = normalizeHash(encondingRound2);
    return normalizedResult.toString() + "." + (normalizedResult ^ tkkIndex)
    }
    // usage example:
    var tk = calcHash('hola', '409837.2120040981');
    console.log('tk=' + tk);
    // OUTPUT: 'tk=70528.480109'
  • sl - 源语言 (auto代表自动检测) en

  • tl - 目标语言 zh-CN

  • q - 要翻译的文本 记得url编码一下 你好

  • ie - 输入的编码 utf-8

  • oe - 输出的编码 utf-8

  • tk - 上面js加密的结果 911980.765353

  • dt - may be included more than once and specifies what to return in the reply.Here are some values for dt. If the value is set, the following data will be returned:

  • t - translation of source text

  • at - alternate translations

  • rm - transcription / transliteration of source and translated texts

  • bd - dictionary, in case source text is one word (you get translations with articles, reverse translations, etc.)

  • md - definitions of source text, if it's one word

  • ss - synonyms of source text, if it's one word

  • ex - examples

  • rw - See also list.

  • 顶一下
    (0)
    100%
    订阅 回复
    踩一下
    (0)
    100%
    » 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。
  • 【上一篇】
  • 【下一篇】
  • 目前有 0 条留言 其中:访客:0 条, 博主:0 条

    给我留言

    您必须 [ 登录 ] 才能发表留言!