So verwenden Sie den privaten Schlüssel zum Verschlüsseln von Nachrichten

Ich versuche heutzutage, eine speichernde Bilddatei dapp mit Parity zu entwickeln. Und ich habe vor einigen Tagen eine Frage zum privaten Schlüssel gestellt. Und jemand sagte, dass jedes Konto in Ethereum einen privaten Schlüssel hat, damit ich ihn zum Verschlüsseln verwenden kann.

Aber heute versuche ich, die API zu finden, um mit dem privaten Schlüssel zu verschlüsseln. Aber ich habe gerade Verschlüsselung mit öffentlichem Schlüssel gefunden, wie dieses Web sagt: parity_encryptMessage

Wie benutzt man also den privaten Schlüssel von Ethereum? Gibt es APIs oder etwas anderes, das ich zum Verschlüsseln von Nachrichten verwenden kann? Vielen Dank~

Sie verwenden niemals private Schlüssel zum Verschlüsseln, Sie verwenden immer den öffentlichen Schlüssel zum Verschlüsseln und den privaten Schlüssel zum Entschlüsseln.

Antworten (1)

Sie verwenden niemals private Schlüssel zum Verschlüsseln, Sie verwenden immer den öffentlichen Schlüssel zum Verschlüsseln und den privaten Schlüssel zum Entschlüsseln. Angenommen, Sie suchen den öffentlichen Schlüssel: Um ein neues Schlüsselpaar zu generieren, können Sie ethkey verwenden . Der Einfachheit halber werde ich aus Ihrem Nick eine Gehirn-Wallet generieren, damit Sie diese Parameter wiederverwenden können. Verwenden Sie dies nicht in einem öffentlichen Netzwerk.

$ ethkey generate brain YangYifei
secret:  c3d09aa314f216b618c84b3592d4d6992096ad544158a511148450771882c16e
public:  8b22ba82b80cb8d9e5e6207cbd8039bdb84398aaa63e5dd0684786456cd69a7708d334c92c540ed1d1764736b51fdcb5b7b95540cc8663851a03da99862e305e
address: 0052afd86e17e4cf7163a619a4cc9724dd04506c

Um dasselbe mit der Parität zu tun und den Schlüssel zur späteren Verwendung direkt zu Ihrem Knoten hinzuzufügen, können Sie parity_newAccountFromPhrase verwenden :

 $ curl --data '{"method":"parity_newAccountFromPhrase","params":["YangYifei","password1337"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
{"jsonrpc":"2.0","result":"0x0052afd86e17e4cf7163a619a4cc9724dd04506c","id":1}

Beachten Sie jedoch, dass wir auch den öffentlichen Schlüssel von ethkeyoben benötigen. Lassen Sie mich jetzt eine Nachricht für Sie verschlüsseln, es erfordert die Nachricht in Hex (verwenden Sie einen ASCII-zu-Hex-Konverter ) und den 64-Byte-öffentlichen Schlüssel. Geben Sie dies nun an parity_encryptMessage weiter :

 $ curl --data '{"method":"parity_encryptMessage","params":["0x8b22ba82b80cb8d9e5e6207cbd8039bdb84398aaa63e5dd0684786456cd69a7708d334c92c540ed1d1764736b51fdcb5b7b95540cc8663851a03da99862e305e","0x48656c6c6f2c2059616e67596966656921"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
{"jsonrpc":"2.0","result":"0x04f0f2a86c0f172d1bc897c23af03d23e8a3d66b84eac9d201f942b11350b4e48e0abcc0dacff1fe75a6ee1b6caa2eb489126336146d38192e656a208c5f22575b94083909c157ce1e0b6182b11bc1aa845ee0f501c2c13134be2b143fe31dd1682ca0be95bdd33c0663c29b760a2ef31c3aa3d0309d79dcf55cae5ebfa50e74c706","id":1}

Das Ergebnis ist Ihre verschlüsselte Nachricht. Um es zu entschlüsseln, können Sie es mit parity_decryptMessage tun , dies funktioniert nicht nur, wenn Sie dieses Konto zuvor zu Parity hinzugefügt haben.

Da zum Entschlüsseln Ihr privater Schlüssel erforderlich ist, müssen Sie Ihr Konto entweder mit personal_unlockAccount entsperren oder die Unterzeichnerfunktion der Brieftasche verwenden.

Wow!! Das hilft mir sehr!!! DANKE !!! Danke eure ausführlichen Antworten! :)
Hallo. Heute versuche ich diese Methode. Es funktioniert erfolgreich. Aber wenn ich mehr als einmal gleichzeitig entschlüsseln möchte, entsperrt es nur einige von ihnen. Ich denke, es kann, weil ich mehrere Anrufe gleichzeitig entschlüsseln kann. Kannst du mir einen Rat geben? Zum Beispiel für immer entsperren. Vielen Dank~
@5chdn - möchten Sie hinzufügen, dass die Verwendung des privaten Schlüssels zum Verschlüsseln eine digitale Signatur erstellt? Jede andere Partei kann die Signatur mit dem entsprechenden öffentlichen Schlüssel des Kontos des Unterzeichners entschlüsseln. Wenn die entschlüsselte Ausgabe mit der verschlüsselten Eingabe übereinstimmt, bestätigt dies, dass die Signatur von jemandem mit Zugriff auf den privaten Schlüssel dieses Kontos erstellt wurde.