Ich habe folgenden Textstring:
Dies ist eine Testnachricht.
Wie kann ich diese Nachricht mit meinem öffentlichen Bitcoin-Schlüssel (Bitcoin-Adresse?) verschlüsseln?
Wie würde ich die Nachricht mit einem privaten Bitcoin-Schlüssel entschlüsseln?
Ja, das ist möglich.
Ich möchte jedoch im Voraus sagen, dass dies aus mehreren Gründen nicht ratsam ist:
Es gibt ein Schema namens ECIES , mit dem Sie elliptische Kurvenschlüssel nutzen können, um ein Verschlüsselungssystem zu erstellen.
Kurz gesagt, es funktioniert durch:
Der Absender:
Der Empfänger:
with associated public key k = kG
.. hier sollte es groß geschrieben werden K = kG
; und AECEnc
sein sollteAESEnc
Wenn Sie Nachrichten verschlüsseln möchten, sollten Sie ein geeignetes Nachrichten-/Dateiverschlüsselungstool wie PGP/GPG verwenden. Selbstgebastelte Kryptografie mit Bitcoin-Dingen neigt dazu, schlechte Sicherheitseigenschaften zu haben.
Befolgen Sie unbedingt die Warnungen, die zuvor in anderen Antworten gegeben wurden, aber für die Aufzeichnung wurde dies in einem Projekt namens Bitmessage implementiert . Die Hauptimplementierung befindet sich in Python unter https://github.com/Bitmessage/PyBitmessage . Es gibt auch ein npm-Modul für node.js, das dies für den Server und den Browser unter Verwendung von OpenSSL-C-Bibliotheken unter der Haube implementiert: eccrypto
:
Abhängigkeiten installieren
$ npm install -g eccrypto
index.js
var crypto = require("crypto");
var eccrypto = require("eccrypto");
var privateKeyA = crypto.randomBytes(32);
var publicKeyA = eccrypto.getPublic(privateKeyA);
var privateKeyB = crypto.randomBytes(32);
var publicKeyB = eccrypto.getPublic(privateKeyB);
// Encrypting the message for B.
eccrypto.encrypt(publicKeyB, Buffer("msg to b")).then(function(encrypted) {
// B decrypting the message.
eccrypto.decrypt(privateKeyB, encrypted).then(function(plaintext) {
console.log("Message to part B:", plaintext.toString());
});
});
// Encrypting the message for A.
eccrypto.encrypt(publicKeyA, Buffer("msg to a")).then(function(encrypted) {
// A decrypting the message.
eccrypto.decrypt(privateKeyA, encrypted).then(function(plaintext) {
console.log("Message to part A:", plaintext.toString());
});
});
Pieter Wuille
Patoshi パトシ
Pieter Wuille
Patoshi パトシ
dave_thompson_085
Jikku Jose