двоичныйДекод в javascript

Я пытаюсь сгенерировать ключ для расшифровки пароля, который был зашифрован с помощью ColdFusion. Я получаю другой результат, когда я binaryDecode(string, "hex") param в binaryDecode(string, "hex") . Как мне перевести это на JavaScript?

в ColdFusion:

binaryDecode("CA993CED42F374C9291FC2484495CD9334E8C822", "hex")   
output is: -54-10360-1966-13116-554131-627268-107-51-10952-24-5634 (binary)  
after that the output will be looped and store in array variable 
then binaryEncode(javaCast("byte[]", arrayVariable), "Base64") 
the result is generatedKey



in Node js:
i didnt get the same output after the binaryDecode
43413939334345443432463337344339323931464332343834343935434439333334453843383232
I tried using `buffer.from()` but it just split to `43 41 39` etc. 

Я пробовал так много вещей, но я не могу получить этот результат -54-10360-1966-13116-554131-627268-107-51-10952-24-5634

Всего 2 ответа


Это не двоичный код Coldfusion. Скорее всего, какая-то система вывода просто печатает в этом формате. Другими словами, это просто конвертировать char в sbyte . Но если вы хотите попробовать этот код

function convert(h) {
    h = h.split('');
    const r = [];
    for(let i=0; i<h.length; i+=2) {
        r.push(parseInt(h[i]+h[i+1], 16));
    }
    return r.map(e => e > 127 ? -(256-e): e).join('')
}


console.log(convert("CA993CED42F374C9291FC2484495CD9334E8C822"));


я нашел то, что искал

var btoa = require('btoa');

const  a= 'CA993CED42F374C9291FC2484495CD9334E8C822'
const f = Buffer.from(a, 'hex');
console.log(f);

const base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(f)));

console.log(base64String);

в любом случае спасибо за помощь


Есть идеи?

10000