У меня есть три поля данных в форме, которая вернет строку. Я хотел бы хэшировать значение этих трех строк и сохранить его в блокчейне. Однако данные в этих трех строках являются конфиденциальными, и я хочу, чтобы только человек, имеющий доступ к закрытому ключу открытого ключа, которым он был зашифрован, мог видеть данные. Есть ли способ сделать это. На данный момент я использую sha256()
функцию Solidity для хеширования и сохранения ее в сопоставлении, но так же любой может расшифровать ее и получить данные, которые я сохранил.
Я хочу, чтобы данные видел только тот, у кого есть доступ к закрытому ключу открытого ключа, которым он был зашифрован. Есть ли способ сделать это
Да, вам нужно зашифровать его, прежде чем отправлять данные в блокчейн. Все в блокчейне, включая транзакции, является общедоступным. Поэтому, если вы отправляете данные в виде открытого текста, любой может их увидеть.
На данный момент я использую функцию Solidity sha256() для хеширования и сохранения ее в отображении, но таким образом любой может расшифровать ее и получить данные, которые я сохранил.
SHA256 предназначен для хеширования , а не для шифрования. Никто не может «расшифровать» что-то из хэша. (Но, как упоминалось выше, если вы хешируете смарт-контракт, значит, вы уже поделились открытым текстом, поэтому никому не нужно ничего «расшифровывать».)
Я делал это несколько раз, а также создал учебник, см. здесь, чтобы сделать это в javascript: https://github.com/pubkey/eth-crypto/blob/master/tutorials/encrypted-message.md
personal_sign
, подписывает сообщение, с ключами, что держит.
Давид021
пользователь19510
Давид021
пользователь19510