Как использовать закрытый ключ для шифрования сообщения

В настоящее время я пытаюсь разработать децентрализованное приложение для хранения файлов изображений с помощью Parity. И я задал вопрос о закрытом ключе несколько дней назад. И кто-то сказал, что у каждой учетной записи есть закрытый ключ в Ethereum, чтобы я мог использовать его для шифрования.

Но сегодня я пытаюсь найти API для шифрования с помощью закрытого ключа. Но я только что нашел шифрование с открытым ключом, как говорится в этой сети: parity_encryptMessage

Итак, как использовать закрытый ключ Ethereum? Существуют ли какие-либо API или что-то еще, что я могу использовать для шифрования сообщения? Большое спасибо~

Вы никогда не используете закрытые ключи для шифрования, вы всегда используете открытый ключ для шифрования и закрытый ключ для расшифровки.

Ответы (1)

Вы никогда не используете закрытые ключи для шифрования, вы всегда используете открытый ключ для шифрования и закрытый ключ для расшифровки. Предполагая, что вы ищете открытый ключ: для создания новой пары ключей вы можете использовать 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 , либо с помощью функции подписания кошелька.

Ух ты!! Мне это очень помогает!!! СПАСИБО !!! Спасибо за ваши подробные ответы! :)
Привет. Сегодня попробую этот метод. Он успешно работает. Но когда я хочу расшифровать более одного раза одновременно, он просто разблокирует некоторые из них. Я думаю, что это возможно, потому что я вызываю расшифровку более одного раза одновременно. Можете ли вы дать мне несколько советов? Например разблокировать навсегда. Большое спасибо~
@ 5chdn - хотите ли вы добавить, что использование закрытого ключа для шифрования создает цифровую подпись? Любая другая сторона может расшифровать подпись с помощью соответствующего открытого ключа учетной записи подписавшего. Если расшифрованный вывод совпадает с зашифрованным вводом, это подтверждает, что подпись была создана кем-то, у кого есть доступ к закрытому ключу этой учетной записи.