目标网站:
aHR0cHMlM0EvL20uaXRvdWNodHYuY24vYXJ0aWNsZS8yOTkxOGFlYjljMGY1MDMzYTY0OGQwNjdjODYzZTA2Mg==
aHR0cHMlM0EvL2JvbHVvLW0uaXRvdWNodHYuY24vJTIzL25ld3MvNzgx
(两个网站加密方式相同)
注意:需要在同文件夹下添加crypto-js前段加密库
var CryptoJS = require("crypto-js");
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var C_enc = C.enc;
var C_algo = C.algo;
function stringify(wordArray) {
// Shortcuts
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
// Clamp excess bits
wordArray.clamp();
// Convert
var base64Chars = [];
for (var i = 0; i < sigBytes; i += 3) {
var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
}
}
// Add padding
var paddingChar = map.charAt(64);
if (paddingChar) {
while (base64Chars.length % 4) {
base64Chars.push(paddingChar);
}
}
return base64Chars.join('');
}
function aa(message, key) {
return new C_algo.HMAC.init(C_algo.SHA256, key).finalize(message);
}
console.log(stringify(aa("GET\n" +
"https://api.itouchtv.cn:8090/newsservice/v1/appBranchH5ShareConfig?domain=boluo-m.itouchtv.cn\n" +
"1597628905116\n"
, "HGXimfS2hcAeWbsCW19JQ7PDasYOgg1lY2UWUDVX8nNmwr6aSaFznnPzKrZ84VY1")))