So konvertieren Sie den öffentlichen Schlüssel (64 Byte) in einen komprimierten öffentlichen Schlüssel (33 Byte)

Ich habe derzeit einen generierten öffentlichen 64-Byte-Schlüssel, der aus einer Ethereum-Transaktion wiederhergestellt wurde.

Wie konvertiere ich diesen Schlüssel in einen 33-Byte-komprimierten öffentlichen Schlüssel? Das Problem, das ich habe, scheint ziemlich trivial zu sein, aber ich kann für mein ganzes Leben keine Lösung finden! Ich arbeite derzeit mit Javascript.

Jede Hilfe wäre sehr willkommen.

Antworten (1)

Es gibt ein Paket, das passende Funktionen enthält, hier ->pubkey/eth-crypto

Sehen:

Der Komprimierungscode ist unten. (Aus dieser Datei kopieren + einfügen.)

var _secp256k = require('secp256k1');

function compress(startsWith04) {

    // add trailing 04 if not done before
    var testBuffer = Buffer.from(startsWith04, 'hex');
    if (testBuffer.length === 64) startsWith04 = '04' + startsWith04;

    return (0, _util.uint8ArrayToHex)((0, _secp256k.publicKeyConvert)((0, _util.hexToUnit8Array)(startsWith04), true));
}
Richard, du Schöne, danke, Bruder, das ist genau das Verhalten, das ich brauche.
Froh, dass ich Helfen kann :-)