Ich schreibe etwas Code in nodejs/browser. Ich habe erfolgreich Ethereum-Adressen mit der secp256k1 -Bibliothek erstellt. Ich konnte auch Nachrichten signieren und verifizieren. Jetzt möchte ich eine Nachricht mit dem öffentlichen und privaten Schlüssel der generierten Adressen verschlüsseln/entschlüsseln. Hat das schon mal jemand gemacht? Kann ich CryptoJS verwenden, um mein Ziel zu erreichen?
thx @Edmunx Edgar, ich habe versucht, ECIES zu verwenden, aber es konnte aufgrund einer untergeordneten Abhängigkeit nicht installiert werden. Ich habe jetzt die bitcore-lib zusammen mit bitcore-ecies verwendet . Das funktioniert wie erwartet.
BEARBEITEN: Ich habe ein npm-Modul erstellt, das genau diese Dinge tut und auch einige Leistungsoptimierungen und Tutorials enthält : github:eth-crypto .
Hier ist mein Code für alle mit der gleichen Frage:
// run 'npm install eth-crypto --save'
const EthCrypto = require('eth-crypto');
// create identitiy with key-pairs and address
const alice = EthCrypto.createIdentity();
const secretMessage = 'My name is Satoshi Buterin';
const encrypted = await EthCrypto.encryptWithPublicKey(
alice.publicKey, // encrypt with alice's publicKey
secretMessage
);
const decrypted = await EthCrypto.decryptWithPrivateKey(
alice.privateKey,
encrypted
);
if(decrypted === secretMessage) console.log('success');
Angenommen, Sie haben den öffentlichen Schlüssel der Person, an die Sie eine Nachricht senden möchten (wenn sie bereits eine Transaktion signiert hat, können Sie sie aus der Signatur wiederherstellen), sollte es möglich sein, mit ECIES zu verschlüsseln und zu entschlüsseln. Anscheinend gibt es dafür eine JavaScript-Bibliothek, ich nehme an, Sie können sie in einem Browser verwenden: https://bitcointalk.org/index.php?topic=627927.0
Ich habe keine Ahnung, ob diese Bibliotheken gut genug sind, um sie sicher zu verwenden.
Ein anderer Ansatz besteht darin, ein separates Schlüsselpaar zu generieren, das eigentlich für die Verschlüsselung ausgelegt ist, und dann den Ethereum-Schlüssel zu verwenden, um den öffentlichen Schlüssel zu signieren und an die andere Partei zu senden.
Malone
var pubKey = new bitcore.PublicKey.fromPrivateKey(privKey);
Sie können jetzt Nachrichten verschlüsseln und entschlüsseln. Irgendwelche Vorschläge, wie ich diese Bibliothek verwenden kann, ohne eine Problemumgehung zu haben? Vielen Dank!pubkey
Malone
bitcore-ecies
jetzt Leistungsprobleme habe. Danke noch einmal.Vixon
MadeInDreams
PASH
PASH
pubkey
Xavier59
eth_decrypt
( docs .metamask.io/guide/rpc-api.html#other-rpc-methods )