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

时间:2015-12-14 14:06:36

标签: javascript bitcoin

我试图在浏览器中从对象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);

但它没有用 在此先感谢

2 个答案:

答案 0 :(得分:1)

好的,我将扩展我的评论

假设: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-char字符串数组,表示字节的十六进制值。

答案 1 :(得分:0)

WORKING: 下面是一段工作代码,它采用一个字节数组并给出一个十六进制字符串。

function toHexString(bytes) {
  return bytes.map(function(byte) {
    return (byte & 0xFF).toString(16)
  }).join('')
}

感谢@derekdreery的帮助:)