javascript – 使用bitcoinjs-min.js从字节数组转换为十六进制格式

我正在尝试从浏览器中的对象Q的以下x和y生成公钥.问题是为了使用这个公钥来验证JWT,我必须得到密钥的十六进制格式.我正在使用来自src =“bitcoinjs.min.js”的密钥对,它不允许我检索十六进制形式的公钥.

是否有任何库或函数将其转换为十六进制形式?

// Taking reference from http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript
var pubX = hdnode.keyPair.Q.x.toByteArrayUnsigned();
var pubY = hdnode.keyPair.Q.y.toByteArrayUnsigned();
var publicKeyBytes = pubX.concat(pubY);
publicKeyBytes.unshift(0x04);

同时我试过了

<script src="http://peterolson.github.com/BigInteger.js/BigInteger.min.js"></script>
var publicKeyInt = BigInt.fromByteArrayUnsigned(publicKeyBytes);

但它不起作用
提前致谢

最佳答案 好的,我将扩展我的评论

假设:key是一个数组或一个可迭代的字节

function getHexArray(key) {
    function num2hex(num) {
        return num > 9 ? num + 55 : num + 48;
    }
    var hex_key = [];
    var lower, upper;
    for (var i = 0; i < key.length; i++) {
        lower = key[i] & 0x0f;
        upper = key[i] >> 4;
        return String.fromCharCode(num2hex(upper)) + 
            String.fromCharCode(num2hex(lower));
    }
    return hex_key;
}

请注意,如果你想要一个长十六进制字符串,你可能想要颠倒低位和高位的顺序(这是作为十六进制字节数组写入)

此函数允许您输入一个字节数组,并输出一个2字符串数组,表示字节的十六进制值.

点赞