Javascript中的XOR密码解密

时间:2018-07-05 06:59:17

标签: javascript xor

我有一个必须解码的base64字符串,即AwELBwc=。使用给我的XOR密码密钥26364,我必须对字符串进行解码才能得到一个我已经知道的数字(7813)。

这将如何在Javascript中完成,您需要使用base64编码的字符串,并使用具有已知密钥的XOR密码运行它,然后输出结果?

2 个答案:

答案 0 :(得分:2)

此代码应执行您想要的操作:

function base64ToArray(base64String) {
    var bstr = atob(base64String);
    var bytes = [];
    for (var i = 0; i < bstr.length; i++) {
        bytes.push(bstr.charCodeAt(i));
    }
    return bytes;
}

let key = [2,6,3,6,4];
let cipherTextBase64 = 'AwELBwc=';
let cipherTextBytes = base64ToArray(cipherTextBase64);

let result = key.map((value,index) => {
    return value ^ cipherTextBytes[index];
});

document.getElementById('output').innerHTML = 'Result: ' + result.join();


console.log('Result: ', result);
<div id="output">
</div>

答案 1 :(得分:2)

以下功能受特里·伦诺克斯(Terry Lennox)在回答中使用的异或字符方法的启发。

function xorDecryptBase64(base64string, cipher)
{
    let keys = cipher.toString().split('');
    let charCodes = atob(base64string).split('')
                    .map(function(c){return c.charCodeAt(0)});
    return Number(charCodes
                  .map(function(v,i){return v ^ keys[i%keys.length]})
                  .slice(1).join('')
           );
}

console.log(xorDecryptBase64('AwELBwc=', 26364));
console.log(xorDecryptBase64('AwAFAAIEAA==', 26364));