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

Conversion from Byte Array to hex format using bitcoinjs-min.js

我正在尝试从浏览器中对象 Q 的以下 x 和 y 生成 public 键。问题是为了使用此 public 密钥来验证 JWT,我必须获取密钥的十六进制格式。我正在使用 src="bitcoinjs.min.js" 中的密钥对,它不允许我检索 public 密钥的十六进制形式。 是否有任何库或函数可以将其转换为十六进制形式?

// 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);

但它不起作用 提前致谢

好的,所以我要扩展我的评论

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

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 字符字符串数组。

正在工作: 下面是一段工作代码,它接受一个字节数组并给出一个十六进制字符串。

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

感谢@derekdreery 的帮助:)