В настоящее время я пытаюсь разработать децентрализованное приложение для хранения файлов изображений с помощью Parity. И я задал вопрос о закрытом ключе несколько дней назад. И кто-то сказал, что у каждой учетной записи есть закрытый ключ в Ethereum, чтобы я мог использовать его для шифрования.
Но сегодня я пытаюсь найти API для шифрования с помощью закрытого ключа. Но я только что нашел шифрование с открытым ключом, как говорится в этой сети: parity_encryptMessage
Итак, как использовать закрытый ключ Ethereum? Существуют ли какие-либо API или что-то еще, что я могу использовать для шифрования сообщения? Большое спасибо~
Вы никогда не используете закрытые ключи для шифрования, вы всегда используете открытый ключ для шифрования и закрытый ключ для расшифровки. Предполагая, что вы ищете открытый ключ: для создания новой пары ключей вы можете использовать ethkey . Для простоты я сгенерирую мозговой кошелек из вашего ника, чтобы вы могли повторно использовать эти параметры. Не используйте это в общедоступной сети.
$ ethkey generate brain YangYifei
secret: c3d09aa314f216b618c84b3592d4d6992096ad544158a511148450771882c16e
public: 8b22ba82b80cb8d9e5e6207cbd8039bdb84398aaa63e5dd0684786456cd69a7708d334c92c540ed1d1764736b51fdcb5b7b95540cc8663851a03da99862e305e
address: 0052afd86e17e4cf7163a619a4cc9724dd04506c
Чтобы сделать то же самое с четностью и напрямую добавить ключ к вашему узлу для последующего использования, вы можете использовать parity_newAccountFromPhrase :
$ 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}
Но обратите внимание, что нам также нужен открытый ключ ethkey
сверху. Теперь позвольте мне зашифровать для вас сообщение, для этого требуется сообщение в шестнадцатеричном формате (используйте преобразователь ascii-to-hex ) и 64-байтовый открытый ключ. Теперь передайте это parity_encryptMessage :
$ 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}
Результатом является ваше зашифрованное сообщение. Чтобы расшифровать его, вы можете сделать это с помощью parity_decryptMessage , но это работает, только если вы ранее добавили эту учетную запись в Parity.
Поскольку для расшифровки требуется ваш закрытый ключ, вам нужно либо разблокировать свою учетную запись с помощью personal_unlockAccount , либо с помощью функции подписания кошелька.
q9f