Wie kann ich eine Nachricht mit meinem privaten Schlüssel signieren und später meine Kontoadresse aus dieser Signatur wiederherstellen, um mein Konto zu validieren?

Ich verwende Ganache-Blockchain, ich möchte überprüfen, ob dies der Schlüssel einer bestimmten Adresse ist.

Adresse: 0x24Ff3B7cacCcd9D05353dFB0Ff5b22062A13FbE0
Schlüssel: c28b71d6d57239ae0a575c5f5f4e7837092238c73eaaaa5e2b5e01c42714a1ed

Ich möchte meine Adresse mit diesem Schlüssel wiederherstellen, um zu überprüfen, ob der Schlüssel zu dieser bestimmten Adresse gehört.

Frage ist nicht klar, Sie wollen es nur mit web3 machen oder Sie verwenden dabei auch einen Vertrag.
Sie können keinen privaten Schlüssel aus einer Signatur erhalten! Die öffentliche Adresse wird aus dem privaten Schlüssel erstellt. Um sie zu finden, müssten Sie also zuerst den privaten Schlüssel finden. Und was meinst du damit, dein Konto zu validieren? Was versuchst du am Ende zu erreichen?
Ich möchte meinen privaten Schlüssel als Passwort verwenden, dessen Benutzername Konto oder öffentlicher Schlüssel ist

Antworten (1)

Eine einfache Möglichkeit, lokal zu überprüfen, ob die öffentliche Adresse zum privaten Schlüssel gehört, ist die Verwendung von nodejs und ethereumjs-wallet.

var ethjsWallet = require("ethereumjs-wallet");
var wallet = ethjsWallet.fromPrivateKey(yourPrivateKey)
var address = wallet.getAddress()

Wenn Sie die öffentliche Adresse aus einer Signatur wiederherstellen möchten, können Sie so etwas wie ethereumjs-utils verwenden. Mit ecrecoverkönnen Sie den öffentlichen Schlüssel wiederherstellen und von dort aus den öffentlichen Schlüssel in die öffentliche Adresse umwandeln.

Ich habe Ihre Implementierung var bufStr="c28b71d6d57239ae0a575c5f5f4e7837092238c73eaaaa5e2b5e01c42714a1ed" verwendet; var buf = Buffer.from(bufStr, 'utf8'); Konsole.log (buf); var ethjsWallet = require("ethereumjs-Wallet"); var wallet = ethjsWallet.fromPrivateKey(buf) var address = wallet.getAddress()
und bekam Fehler: srajan@srajan-virtual-machine ~ $ node test.js <Puffer 63 32 38 62 37 31 64 36 64 35 37 32 33 39 61 65 30 61 35 37 35 63 35 66 35 66 34 65 37 38 33 37 30 39 32 32 33 38 63 37 33 65 61 61 61 61 35 65 32 62 ... > /home/srajan/node_modules/ethereumjs-wallet/index.js:23 throw new error('Privater Schlüssel erfüllt nicht die Kurvenanforderungen (dh es ist ungültig)')