Параметр sig или чем кодируется информация в запросе

alasqa

Client
Регистрация
29.03.2021
Сообщения
33
Благодарностей
2
Баллы
8
Добрый день форумчане, столкнулся с небольшой (надеюсь) проблемой при автоматизации регистрации аккаунтов на одном сайте через пост-геты
При регистрации отправляется запрос с такими данными (на скрине)
Параметр sig напрямую зависит от вводимого мыла (account), поэтому я предполагаю что это просто мыло в зашифрованном виде, тогда появляется вопрос где и как найти принцип шифрования чтобы отправлять верный sig?
96189
сайт тык
 
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113

alasqa

Client
Регистрация
29.03.2021
Сообщения
33
Благодарностей
2
Баллы
8

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 285
Баллы
113
может мд5 из параметров + соль вшитую кудато в код сайта.)
 

alasqa

Client
Регистрация
29.03.2021
Сообщения
33
Благодарностей
2
Баллы
8
может мд5 из параметров + соль вшитую кудато в код сайта.)
звучит хорошо, но я не смог найти ничего похожего на соль, может плохо искал)
вроде такая глупость, до этого не сталкивался с таким, чтобы помимо самой почты нужно было ещё передавать это же мыло, только сказочным образом зашифрованное)
 

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 285
Баллы
113
я когда свой первый блог писал на пхп (и последний), при регистрации генерировал пароль пользователя так:
- брал его введённый пароль
- добавлял заранее только мне известный (зашитый в код) набор символов
- генерировал из этого вот такую сигнатуру
- записывал в бд

Как это провернуть обратно, знал, получается только я, ведь тот набор символов знал только я. Может быть тут типа такого? Ведь если эта хреновина где-то в коде вшита, то её и не найти? Я просто не очень в теме, тоже интересно.
 

alasqa

Client
Регистрация
29.03.2021
Сообщения
33
Благодарностей
2
Баллы
8
я когда свой первый блог писал на пхп (и последний), при регистрации генерировал пароль пользователя так:
- брал его введённый пароль
- добавлял заранее только мне известный (зашитый в код) набор символов
- генерировал из этого вот такую сигнатуру
- записывал в бд

Как это провернуть обратно, знал, получается только я, ведь тот набор символов знал только я. Может быть тут типа такого? Ведь если эта хреновина где-то в коде вшита, то её и не найти? Я просто не очень в теме, тоже интересно.
ну мне кажется когда пароль генерирует сам сайт и когда пароль вводится пользователем это разные вещи и должны работать по разному))
не может ведь быть такого что в обычном пост запросе при регистрации используются такие данные, что я не смогу воссоздать запрос искусственно, ну по крайней мере я так думаю, надеюсь переубеждаться не придётся)
 

southside

Client
Регистрация
20.04.2019
Сообщения
198
Благодарностей
250
Баллы
63
Ссылка на сайт - это приватная информация в данном случае? Если нет, то оставили бы её здесь, может быть кто-нибудь посмотрит
 

alasqa

Client
Регистрация
29.03.2021
Сообщения
33
Благодарностей
2
Баллы
8
Ссылка на сайт - это приватная информация в данном случае? Если нет, то оставили бы её здесь, может быть кто-нибудь посмотрит
оставил в шапке ссылку)
из новостей только то что после регистрации уже на логин идет пароль зашифрованный в обычный мд5 (тогда казалось бы зачем заморачиваться и зачем-то шифровать мыло, да ещё и с солью)
на чек мыла на регистрацию, регистрацию и сам логин сигнатура идёт разная, но в целом для одного мыла она одна и не меняется (ну тогда получается таймстемпы в соль тоже не идут)
 
Последнее редактирование:

rastvl

Client
Команда форума
Регистрация
16.01.2019
Сообщения
656
Благодарностей
1 053
Баллы
93
где и как найти принцип шифрования чтобы отправлять верный sig?
сиг.gifсиг.gif
JS
JS:
const wordsToBytes = (e) => {
    for (var a = [], t = 0; t < 32 * e.length; t += 8)
            a.push(e[t >>> 5] >>> 24 - t % 32 & 255);
     return a
}

var n = {
    stringToBytes: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(255 & e.charCodeAt(t));
            return a
        },
    bytesToString: function(e) {
        for (var a = [], t = 0; t < e.length; t++)
            a.push(String.fromCharCode(e[t]));
        return a.join("")
    }
}

var se = {
    endian: function(e) {
        if (e.constructor == Number)
            return 16711935 & se.rotl(e, 8) | 4278255360 & se.rotl(e, 24);
        for (var a = 0; a < e.length; a++)
            e[a] = se.endian(e[a]);
        return e
    }
}

var se = {
    rotl: function(e, a) {
        return e << a | e >>> 32 - a
    },
    rotr: function(e, a) {
        return e << 32 - a | e >>> a
    },
    endian: function(e) {
        if (e.constructor == Number)
            return 16711935 & se.rotl(e, 8) | 4278255360 & se.rotl(e, 24);
        for (var a = 0; a < e.length; a++)
            e[a] = se.endian(e[a]);
        return e
    },
    randomBytes: function(e) {
        for (var a = []; e > 0; e--)
            a.push(Math.floor(256 * Math.random()));
        return a
    },
    bytesToWords: function(e) {
        for (var a = [], t = 0, n = 0; t < e.length; t++,
        n += 8)
            a[n >>> 5] |= e[t] << 24 - n % 32;
        return a
    },
    wordsToBytes: function(e) {
        for (var a = [], t = 0; t < 32 * e.length; t += 8)
            a.push(e[t >>> 5] >>> 24 - t % 32 & 255);
        return a
    },
    bytesToHex: function(e) {
        for (var a = [], t = 0; t < e.length; t++)
            a.push((e[t] >>> 4).toString(16)),
            a.push((15 & e[t]).toString(16));
        return a.join("")
    },
    hexToBytes: function(e) {
        for (var a = [], t = 0; t < e.length; t += 2)
            a.push(parseInt(e.substr(t, 2), 16));
        return a
    },
    bytesToBase64: function(e) {
        for (var a = [], t = 0; t < e.length; t += 3)
            for (var n = e[t] << 16 | e[t + 1] << 8 | e[t + 2], i = 0; i < 4; i++)
                8 * t + 6 * i <= 8 * e.length ? a.push(pe.charAt(n >>> 6 * (3 - i) & 63)) : a.push("=");
        return a.join("")
    },
    base64ToBytes: function(e) {
        e = e.replace(/[^A-Z0-9+\/]/gi, "");
        for (var a = [], t = 0, n = 0; t < e.length; n = ++t % 4)
            n != 0 && a.push((pe.indexOf(e.charAt(t - 1)) & Math.pow(2, -2 * n + 8) - 1) << 2 * n | pe.indexOf(e.charAt(t)) >>> 6 - 2 * n);
        return a
    }
}

var ze = {
    bin: {
        stringToBytes: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(255 & e.charCodeAt(t));
            return a
        },
        bytesToString: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(String.fromCharCode(e[t]));
            return a.join("")
        }
    }
}

var a = {
    stringToBytes: function(e) {
            return ze.bin.stringToBytes(unescape(encodeURIComponent(e)))
        },
    bytesToString: function(e) {
        return decodeURIComponent(escape(ze.bin.bytesToString(e)))
    }
}

var i = {};
i._ff = function(o, h, c, d, s, r, l) {
        var u = o + (h & c | ~h & d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._gg = function(o, h, c, d, s, r, l) {
        var u = o + (h & d | c & ~d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._hh = function(o, h, c, d, s, r, l) {
        var u = o + (h ^ c ^ d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._ii = function(o, h, c, d, s, r, l) {
        var u = o + (c ^ (h | ~d)) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }

const dec = function(o, h) {
        var e = se;
        o.constructor == String ? o = h && h.encoding === "binary" ? n.stringToBytes(o) : a.stringToBytes(o) : t(o) ? o = Array.prototype.slice.call(o, 0) : Array.isArray(o) || o.constructor === Uint8Array || (o = o.toString());
        for (var c = e.bytesToWords(o), d = 8 * o.length, s = 1732584193, r = -271733879, l = -1732584194, u = 271733878, p = 0; p < c.length; p++)
            c[p] = 16711935 & (c[p] << 8 | c[p] >>> 24) | 4278255360 & (c[p] << 24 | c[p] >>> 8);
        c[d >>> 5] |= 128 << d % 32,
        c[14 + (d + 64 >>> 9 << 4)] = d;
        var y = i._ff
          , C = i._gg
          , k = i._hh
          , v = i._ii;
        for (p = 0; p < c.length; p += 16) {
            var S = s
              , M = r
              , $ = l
              , B = u;
            s = y(s, r, l, u, c[p + 0], 7, -680876936),
            u = y(u, s, r, l, c[p + 1], 12, -389564586),
            l = y(l, u, s, r, c[p + 2], 17, 606105819),
            r = y(r, l, u, s, c[p + 3], 22, -1044525330),
            s = y(s, r, l, u, c[p + 4], 7, -176418897),
            u = y(u, s, r, l, c[p + 5], 12, 1200080426),
            l = y(l, u, s, r, c[p + 6], 17, -1473231341),
            r = y(r, l, u, s, c[p + 7], 22, -45705983),
            s = y(s, r, l, u, c[p + 8], 7, 1770035416),
            u = y(u, s, r, l, c[p + 9], 12, -1958414417),
            l = y(l, u, s, r, c[p + 10], 17, -42063),
            r = y(r, l, u, s, c[p + 11], 22, -1990404162),
            s = y(s, r, l, u, c[p + 12], 7, 1804603682),
            u = y(u, s, r, l, c[p + 13], 12, -40341101),
            l = y(l, u, s, r, c[p + 14], 17, -1502002290),
            s = C(s, r = y(r, l, u, s, c[p + 15], 22, 1236535329), l, u, c[p + 1], 5, -165796510),
            u = C(u, s, r, l, c[p + 6], 9, -1069501632),
            l = C(l, u, s, r, c[p + 11], 14, 643717713),
            r = C(r, l, u, s, c[p + 0], 20, -373897302),
            s = C(s, r, l, u, c[p + 5], 5, -701558691),
            u = C(u, s, r, l, c[p + 10], 9, 38016083),
            l = C(l, u, s, r, c[p + 15], 14, -660478335),
            r = C(r, l, u, s, c[p + 4], 20, -405537848),
            s = C(s, r, l, u, c[p + 9], 5, 568446438),
            u = C(u, s, r, l, c[p + 14], 9, -1019803690),
            l = C(l, u, s, r, c[p + 3], 14, -187363961),
            r = C(r, l, u, s, c[p + 8], 20, 1163531501),
            s = C(s, r, l, u, c[p + 13], 5, -1444681467),
            u = C(u, s, r, l, c[p + 2], 9, -51403784),
            l = C(l, u, s, r, c[p + 7], 14, 1735328473),
            s = k(s, r = C(r, l, u, s, c[p + 12], 20, -1926607734), l, u, c[p + 5], 4, -378558),
            u = k(u, s, r, l, c[p + 8], 11, -2022574463),
            l = k(l, u, s, r, c[p + 11], 16, 1839030562),
            r = k(r, l, u, s, c[p + 14], 23, -35309556),
            s = k(s, r, l, u, c[p + 1], 4, -1530992060),
            u = k(u, s, r, l, c[p + 4], 11, 1272893353),
            l = k(l, u, s, r, c[p + 7], 16, -155497632),
            r = k(r, l, u, s, c[p + 10], 23, -1094730640),
            s = k(s, r, l, u, c[p + 13], 4, 681279174),
            u = k(u, s, r, l, c[p + 0], 11, -358537222),
            l = k(l, u, s, r, c[p + 3], 16, -722521979),
            r = k(r, l, u, s, c[p + 6], 23, 76029189),
            s = k(s, r, l, u, c[p + 9], 4, -640364487),
            u = k(u, s, r, l, c[p + 12], 11, -421815835),
            l = k(l, u, s, r, c[p + 15], 16, 530742520),
            s = v(s, r = k(r, l, u, s, c[p + 2], 23, -995338651), l, u, c[p + 0], 6, -198630844),
            u = v(u, s, r, l, c[p + 7], 10, 1126891415),
            l = v(l, u, s, r, c[p + 14], 15, -1416354905),
            r = v(r, l, u, s, c[p + 5], 21, -57434055),
            s = v(s, r, l, u, c[p + 12], 6, 1700485571),
            u = v(u, s, r, l, c[p + 3], 10, -1894986606),
            l = v(l, u, s, r, c[p + 10], 15, -1051523),
            r = v(r, l, u, s, c[p + 1], 21, -2054922799),
            s = v(s, r, l, u, c[p + 8], 6, 1873313359),
            u = v(u, s, r, l, c[p + 15], 10, -30611744),
            l = v(l, u, s, r, c[p + 6], 15, -1560198380),
            r = v(r, l, u, s, c[p + 13], 21, 1309151649),
            s = v(s, r, l, u, c[p + 4], 6, -145523070),
            u = v(u, s, r, l, c[p + 11], 10, -1120210379),
            l = v(l, u, s, r, c[p + 2], 15, 718787259),
            r = v(r, l, u, s, c[p + 9], 21, -343485551),
            s = s + S >>> 0,
            r = r + M >>> 0,
            l = l + $ >>> 0,
            u = u + B >>> 0
        }
        return e.endian([s, r, l, u])
    }

const getSig = (o, h = '/account/registerstatus') => {
    var c = wordsToBytes(dec(o, h));
    return h && h.asBytes ? c : h && h.asString ? n.bytesToString(c) : se.bytesToHex(c)
}
 

alasqa

Client
Регистрация
29.03.2021
Сообщения
33
Благодарностей
2
Баллы
8
JS
JS:
const wordsToBytes = (e) => {
    for (var a = [], t = 0; t < 32 * e.length; t += 8)
            a.push(e[t >>> 5] >>> 24 - t % 32 & 255);
     return a
}

var n = {
    stringToBytes: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(255 & e.charCodeAt(t));
            return a
        },
    bytesToString: function(e) {
        for (var a = [], t = 0; t < e.length; t++)
            a.push(String.fromCharCode(e[t]));
        return a.join("")
    }
}

var se = {
    endian: function(e) {
        if (e.constructor == Number)
            return 16711935 & se.rotl(e, 8) | 4278255360 & se.rotl(e, 24);
        for (var a = 0; a < e.length; a++)
            e[a] = se.endian(e[a]);
        return e
    }
}

var se = {
    rotl: function(e, a) {
        return e << a | e >>> 32 - a
    },
    rotr: function(e, a) {
        return e << 32 - a | e >>> a
    },
    endian: function(e) {
        if (e.constructor == Number)
            return 16711935 & se.rotl(e, 8) | 4278255360 & se.rotl(e, 24);
        for (var a = 0; a < e.length; a++)
            e[a] = se.endian(e[a]);
        return e
    },
    randomBytes: function(e) {
        for (var a = []; e > 0; e--)
            a.push(Math.floor(256 * Math.random()));
        return a
    },
    bytesToWords: function(e) {
        for (var a = [], t = 0, n = 0; t < e.length; t++,
        n += 8)
            a[n >>> 5] |= e[t] << 24 - n % 32;
        return a
    },
    wordsToBytes: function(e) {
        for (var a = [], t = 0; t < 32 * e.length; t += 8)
            a.push(e[t >>> 5] >>> 24 - t % 32 & 255);
        return a
    },
    bytesToHex: function(e) {
        for (var a = [], t = 0; t < e.length; t++)
            a.push((e[t] >>> 4).toString(16)),
            a.push((15 & e[t]).toString(16));
        return a.join("")
    },
    hexToBytes: function(e) {
        for (var a = [], t = 0; t < e.length; t += 2)
            a.push(parseInt(e.substr(t, 2), 16));
        return a
    },
    bytesToBase64: function(e) {
        for (var a = [], t = 0; t < e.length; t += 3)
            for (var n = e[t] << 16 | e[t + 1] << 8 | e[t + 2], i = 0; i < 4; i++)
                8 * t + 6 * i <= 8 * e.length ? a.push(pe.charAt(n >>> 6 * (3 - i) & 63)) : a.push("=");
        return a.join("")
    },
    base64ToBytes: function(e) {
        e = e.replace(/[^A-Z0-9+\/]/gi, "");
        for (var a = [], t = 0, n = 0; t < e.length; n = ++t % 4)
            n != 0 && a.push((pe.indexOf(e.charAt(t - 1)) & Math.pow(2, -2 * n + 8) - 1) << 2 * n | pe.indexOf(e.charAt(t)) >>> 6 - 2 * n);
        return a
    }
}

var ze = {
    bin: {
        stringToBytes: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(255 & e.charCodeAt(t));
            return a
        },
        bytesToString: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(String.fromCharCode(e[t]));
            return a.join("")
        }
    }
}

var a = {
    stringToBytes: function(e) {
            return ze.bin.stringToBytes(unescape(encodeURIComponent(e)))
        },
    bytesToString: function(e) {
        return decodeURIComponent(escape(ze.bin.bytesToString(e)))
    }
}

var i = {};
i._ff = function(o, h, c, d, s, r, l) {
        var u = o + (h & c | ~h & d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._gg = function(o, h, c, d, s, r, l) {
        var u = o + (h & d | c & ~d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._hh = function(o, h, c, d, s, r, l) {
        var u = o + (h ^ c ^ d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._ii = function(o, h, c, d, s, r, l) {
        var u = o + (c ^ (h | ~d)) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }

const dec = function(o, h) {
        var e = se;
        o.constructor == String ? o = h && h.encoding === "binary" ? n.stringToBytes(o) : a.stringToBytes(o) : t(o) ? o = Array.prototype.slice.call(o, 0) : Array.isArray(o) || o.constructor === Uint8Array || (o = o.toString());
        for (var c = e.bytesToWords(o), d = 8 * o.length, s = 1732584193, r = -271733879, l = -1732584194, u = 271733878, p = 0; p < c.length; p++)
            c[p] = 16711935 & (c[p] << 8 | c[p] >>> 24) | 4278255360 & (c[p] << 24 | c[p] >>> 8);
        c[d >>> 5] |= 128 << d % 32,
        c[14 + (d + 64 >>> 9 << 4)] = d;
        var y = i._ff
          , C = i._gg
          , k = i._hh
          , v = i._ii;
        for (p = 0; p < c.length; p += 16) {
            var S = s
              , M = r
              , $ = l
              , B = u;
            s = y(s, r, l, u, c[p + 0], 7, -680876936),
            u = y(u, s, r, l, c[p + 1], 12, -389564586),
            l = y(l, u, s, r, c[p + 2], 17, 606105819),
            r = y(r, l, u, s, c[p + 3], 22, -1044525330),
            s = y(s, r, l, u, c[p + 4], 7, -176418897),
            u = y(u, s, r, l, c[p + 5], 12, 1200080426),
            l = y(l, u, s, r, c[p + 6], 17, -1473231341),
            r = y(r, l, u, s, c[p + 7], 22, -45705983),
            s = y(s, r, l, u, c[p + 8], 7, 1770035416),
            u = y(u, s, r, l, c[p + 9], 12, -1958414417),
            l = y(l, u, s, r, c[p + 10], 17, -42063),
            r = y(r, l, u, s, c[p + 11], 22, -1990404162),
            s = y(s, r, l, u, c[p + 12], 7, 1804603682),
            u = y(u, s, r, l, c[p + 13], 12, -40341101),
            l = y(l, u, s, r, c[p + 14], 17, -1502002290),
            s = C(s, r = y(r, l, u, s, c[p + 15], 22, 1236535329), l, u, c[p + 1], 5, -165796510),
            u = C(u, s, r, l, c[p + 6], 9, -1069501632),
            l = C(l, u, s, r, c[p + 11], 14, 643717713),
            r = C(r, l, u, s, c[p + 0], 20, -373897302),
            s = C(s, r, l, u, c[p + 5], 5, -701558691),
            u = C(u, s, r, l, c[p + 10], 9, 38016083),
            l = C(l, u, s, r, c[p + 15], 14, -660478335),
            r = C(r, l, u, s, c[p + 4], 20, -405537848),
            s = C(s, r, l, u, c[p + 9], 5, 568446438),
            u = C(u, s, r, l, c[p + 14], 9, -1019803690),
            l = C(l, u, s, r, c[p + 3], 14, -187363961),
            r = C(r, l, u, s, c[p + 8], 20, 1163531501),
            s = C(s, r, l, u, c[p + 13], 5, -1444681467),
            u = C(u, s, r, l, c[p + 2], 9, -51403784),
            l = C(l, u, s, r, c[p + 7], 14, 1735328473),
            s = k(s, r = C(r, l, u, s, c[p + 12], 20, -1926607734), l, u, c[p + 5], 4, -378558),
            u = k(u, s, r, l, c[p + 8], 11, -2022574463),
            l = k(l, u, s, r, c[p + 11], 16, 1839030562),
            r = k(r, l, u, s, c[p + 14], 23, -35309556),
            s = k(s, r, l, u, c[p + 1], 4, -1530992060),
            u = k(u, s, r, l, c[p + 4], 11, 1272893353),
            l = k(l, u, s, r, c[p + 7], 16, -155497632),
            r = k(r, l, u, s, c[p + 10], 23, -1094730640),
            s = k(s, r, l, u, c[p + 13], 4, 681279174),
            u = k(u, s, r, l, c[p + 0], 11, -358537222),
            l = k(l, u, s, r, c[p + 3], 16, -722521979),
            r = k(r, l, u, s, c[p + 6], 23, 76029189),
            s = k(s, r, l, u, c[p + 9], 4, -640364487),
            u = k(u, s, r, l, c[p + 12], 11, -421815835),
            l = k(l, u, s, r, c[p + 15], 16, 530742520),
            s = v(s, r = k(r, l, u, s, c[p + 2], 23, -995338651), l, u, c[p + 0], 6, -198630844),
            u = v(u, s, r, l, c[p + 7], 10, 1126891415),
            l = v(l, u, s, r, c[p + 14], 15, -1416354905),
            r = v(r, l, u, s, c[p + 5], 21, -57434055),
            s = v(s, r, l, u, c[p + 12], 6, 1700485571),
            u = v(u, s, r, l, c[p + 3], 10, -1894986606),
            l = v(l, u, s, r, c[p + 10], 15, -1051523),
            r = v(r, l, u, s, c[p + 1], 21, -2054922799),
            s = v(s, r, l, u, c[p + 8], 6, 1873313359),
            u = v(u, s, r, l, c[p + 15], 10, -30611744),
            l = v(l, u, s, r, c[p + 6], 15, -1560198380),
            r = v(r, l, u, s, c[p + 13], 21, 1309151649),
            s = v(s, r, l, u, c[p + 4], 6, -145523070),
            u = v(u, s, r, l, c[p + 11], 10, -1120210379),
            l = v(l, u, s, r, c[p + 2], 15, 718787259),
            r = v(r, l, u, s, c[p + 9], 21, -343485551),
            s = s + S >>> 0,
            r = r + M >>> 0,
            l = l + $ >>> 0,
            u = u + B >>> 0
        }
        return e.endian([s, r, l, u])
    }

const getSig = (o, h = '/account/registerstatus') => {
    var c = wordsToBytes(dec(o, h));
    return h && h.asBytes ? c : h && h.asString ? n.bytesToString(c) : se.bytesToHex(c)
}
друг, ты просто волшебник)))
и гифочку приложил, и по полочкам в ней всё разложил
безмерно благодарен!!
 

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 285
Баллы
113
JS
JS:
const wordsToBytes = (e) => {
    for (var a = [], t = 0; t < 32 * e.length; t += 8)
            a.push(e[t >>> 5] >>> 24 - t % 32 & 255);
     return a
}

var n = {
    stringToBytes: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(255 & e.charCodeAt(t));
            return a
        },
    bytesToString: function(e) {
        for (var a = [], t = 0; t < e.length; t++)
            a.push(String.fromCharCode(e[t]));
        return a.join("")
    }
}

var se = {
    endian: function(e) {
        if (e.constructor == Number)
            return 16711935 & se.rotl(e, 8) | 4278255360 & se.rotl(e, 24);
        for (var a = 0; a < e.length; a++)
            e[a] = se.endian(e[a]);
        return e
    }
}

var se = {
    rotl: function(e, a) {
        return e << a | e >>> 32 - a
    },
    rotr: function(e, a) {
        return e << 32 - a | e >>> a
    },
    endian: function(e) {
        if (e.constructor == Number)
            return 16711935 & se.rotl(e, 8) | 4278255360 & se.rotl(e, 24);
        for (var a = 0; a < e.length; a++)
            e[a] = se.endian(e[a]);
        return e
    },
    randomBytes: function(e) {
        for (var a = []; e > 0; e--)
            a.push(Math.floor(256 * Math.random()));
        return a
    },
    bytesToWords: function(e) {
        for (var a = [], t = 0, n = 0; t < e.length; t++,
        n += 8)
            a[n >>> 5] |= e[t] << 24 - n % 32;
        return a
    },
    wordsToBytes: function(e) {
        for (var a = [], t = 0; t < 32 * e.length; t += 8)
            a.push(e[t >>> 5] >>> 24 - t % 32 & 255);
        return a
    },
    bytesToHex: function(e) {
        for (var a = [], t = 0; t < e.length; t++)
            a.push((e[t] >>> 4).toString(16)),
            a.push((15 & e[t]).toString(16));
        return a.join("")
    },
    hexToBytes: function(e) {
        for (var a = [], t = 0; t < e.length; t += 2)
            a.push(parseInt(e.substr(t, 2), 16));
        return a
    },
    bytesToBase64: function(e) {
        for (var a = [], t = 0; t < e.length; t += 3)
            for (var n = e[t] << 16 | e[t + 1] << 8 | e[t + 2], i = 0; i < 4; i++)
                8 * t + 6 * i <= 8 * e.length ? a.push(pe.charAt(n >>> 6 * (3 - i) & 63)) : a.push("=");
        return a.join("")
    },
    base64ToBytes: function(e) {
        e = e.replace(/[^A-Z0-9+\/]/gi, "");
        for (var a = [], t = 0, n = 0; t < e.length; n = ++t % 4)
            n != 0 && a.push((pe.indexOf(e.charAt(t - 1)) & Math.pow(2, -2 * n + 8) - 1) << 2 * n | pe.indexOf(e.charAt(t)) >>> 6 - 2 * n);
        return a
    }
}

var ze = {
    bin: {
        stringToBytes: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(255 & e.charCodeAt(t));
            return a
        },
        bytesToString: function(e) {
            for (var a = [], t = 0; t < e.length; t++)
                a.push(String.fromCharCode(e[t]));
            return a.join("")
        }
    }
}

var a = {
    stringToBytes: function(e) {
            return ze.bin.stringToBytes(unescape(encodeURIComponent(e)))
        },
    bytesToString: function(e) {
        return decodeURIComponent(escape(ze.bin.bytesToString(e)))
    }
}

var i = {};
i._ff = function(o, h, c, d, s, r, l) {
        var u = o + (h & c | ~h & d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._gg = function(o, h, c, d, s, r, l) {
        var u = o + (h & d | c & ~d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._hh = function(o, h, c, d, s, r, l) {
        var u = o + (h ^ c ^ d) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }
    ,
    i._ii = function(o, h, c, d, s, r, l) {
        var u = o + (c ^ (h | ~d)) + (s >>> 0) + l;
        return (u << r | u >>> 32 - r) + h
    }

const dec = function(o, h) {
        var e = se;
        o.constructor == String ? o = h && h.encoding === "binary" ? n.stringToBytes(o) : a.stringToBytes(o) : t(o) ? o = Array.prototype.slice.call(o, 0) : Array.isArray(o) || o.constructor === Uint8Array || (o = o.toString());
        for (var c = e.bytesToWords(o), d = 8 * o.length, s = 1732584193, r = -271733879, l = -1732584194, u = 271733878, p = 0; p < c.length; p++)
            c[p] = 16711935 & (c[p] << 8 | c[p] >>> 24) | 4278255360 & (c[p] << 24 | c[p] >>> 8);
        c[d >>> 5] |= 128 << d % 32,
        c[14 + (d + 64 >>> 9 << 4)] = d;
        var y = i._ff
          , C = i._gg
          , k = i._hh
          , v = i._ii;
        for (p = 0; p < c.length; p += 16) {
            var S = s
              , M = r
              , $ = l
              , B = u;
            s = y(s, r, l, u, c[p + 0], 7, -680876936),
            u = y(u, s, r, l, c[p + 1], 12, -389564586),
            l = y(l, u, s, r, c[p + 2], 17, 606105819),
            r = y(r, l, u, s, c[p + 3], 22, -1044525330),
            s = y(s, r, l, u, c[p + 4], 7, -176418897),
            u = y(u, s, r, l, c[p + 5], 12, 1200080426),
            l = y(l, u, s, r, c[p + 6], 17, -1473231341),
            r = y(r, l, u, s, c[p + 7], 22, -45705983),
            s = y(s, r, l, u, c[p + 8], 7, 1770035416),
            u = y(u, s, r, l, c[p + 9], 12, -1958414417),
            l = y(l, u, s, r, c[p + 10], 17, -42063),
            r = y(r, l, u, s, c[p + 11], 22, -1990404162),
            s = y(s, r, l, u, c[p + 12], 7, 1804603682),
            u = y(u, s, r, l, c[p + 13], 12, -40341101),
            l = y(l, u, s, r, c[p + 14], 17, -1502002290),
            s = C(s, r = y(r, l, u, s, c[p + 15], 22, 1236535329), l, u, c[p + 1], 5, -165796510),
            u = C(u, s, r, l, c[p + 6], 9, -1069501632),
            l = C(l, u, s, r, c[p + 11], 14, 643717713),
            r = C(r, l, u, s, c[p + 0], 20, -373897302),
            s = C(s, r, l, u, c[p + 5], 5, -701558691),
            u = C(u, s, r, l, c[p + 10], 9, 38016083),
            l = C(l, u, s, r, c[p + 15], 14, -660478335),
            r = C(r, l, u, s, c[p + 4], 20, -405537848),
            s = C(s, r, l, u, c[p + 9], 5, 568446438),
            u = C(u, s, r, l, c[p + 14], 9, -1019803690),
            l = C(l, u, s, r, c[p + 3], 14, -187363961),
            r = C(r, l, u, s, c[p + 8], 20, 1163531501),
            s = C(s, r, l, u, c[p + 13], 5, -1444681467),
            u = C(u, s, r, l, c[p + 2], 9, -51403784),
            l = C(l, u, s, r, c[p + 7], 14, 1735328473),
            s = k(s, r = C(r, l, u, s, c[p + 12], 20, -1926607734), l, u, c[p + 5], 4, -378558),
            u = k(u, s, r, l, c[p + 8], 11, -2022574463),
            l = k(l, u, s, r, c[p + 11], 16, 1839030562),
            r = k(r, l, u, s, c[p + 14], 23, -35309556),
            s = k(s, r, l, u, c[p + 1], 4, -1530992060),
            u = k(u, s, r, l, c[p + 4], 11, 1272893353),
            l = k(l, u, s, r, c[p + 7], 16, -155497632),
            r = k(r, l, u, s, c[p + 10], 23, -1094730640),
            s = k(s, r, l, u, c[p + 13], 4, 681279174),
            u = k(u, s, r, l, c[p + 0], 11, -358537222),
            l = k(l, u, s, r, c[p + 3], 16, -722521979),
            r = k(r, l, u, s, c[p + 6], 23, 76029189),
            s = k(s, r, l, u, c[p + 9], 4, -640364487),
            u = k(u, s, r, l, c[p + 12], 11, -421815835),
            l = k(l, u, s, r, c[p + 15], 16, 530742520),
            s = v(s, r = k(r, l, u, s, c[p + 2], 23, -995338651), l, u, c[p + 0], 6, -198630844),
            u = v(u, s, r, l, c[p + 7], 10, 1126891415),
            l = v(l, u, s, r, c[p + 14], 15, -1416354905),
            r = v(r, l, u, s, c[p + 5], 21, -57434055),
            s = v(s, r, l, u, c[p + 12], 6, 1700485571),
            u = v(u, s, r, l, c[p + 3], 10, -1894986606),
            l = v(l, u, s, r, c[p + 10], 15, -1051523),
            r = v(r, l, u, s, c[p + 1], 21, -2054922799),
            s = v(s, r, l, u, c[p + 8], 6, 1873313359),
            u = v(u, s, r, l, c[p + 15], 10, -30611744),
            l = v(l, u, s, r, c[p + 6], 15, -1560198380),
            r = v(r, l, u, s, c[p + 13], 21, 1309151649),
            s = v(s, r, l, u, c[p + 4], 6, -145523070),
            u = v(u, s, r, l, c[p + 11], 10, -1120210379),
            l = v(l, u, s, r, c[p + 2], 15, 718787259),
            r = v(r, l, u, s, c[p + 9], 21, -343485551),
            s = s + S >>> 0,
            r = r + M >>> 0,
            l = l + $ >>> 0,
            u = u + B >>> 0
        }
        return e.endian([s, r, l, u])
    }

const getSig = (o, h = '/account/registerstatus') => {
    var c = wordsToBytes(dec(o, h));
    return h && h.asBytes ? c : h && h.asString ? n.bytesToString(c) : se.bytesToHex(c)
}
Прикольно)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)