Какой алгоритм хеширования использует web3? ethereumjs-util Sha3 возвращает другой результат - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь правильно подписать метод аутентификации с помощью функции signPersonalMessage в web3. Однако пакет eth-sig-util, который правильно проверяет подлинность, не создает тот же хэш с теми же данными, что и SHA3-256 и Keccak-256.

Например, если я попытаюсь хэшировать: 0x664f5f32784d335a69596e4f416c636373496859377054744f704c6e54666a314c70314a4f364d565f4638

Мой результат с Keccak256: 5dc2751b78fdb82a0986ad2a8e6cc774458d7a096e8eafd3ab6937146b7d2eec

Мой результат с SHA3-256: 6fa399a29899ebab112d562526b9b735f0cf7ce4bdc5a96edfcc48572b8d3e7b

Мой результат с библиотечной функцией Sha3: 40de9eb1ead6a6299af30cdf51eca39d44be214ce7431c93ff546cf5fb1ef0fb

Это единственная проблема, о которой я могу думать, я также часто сталкивался с ошибкой «Неверная длина v» или «Недопустимая длина подписи», когда пытался подписать и подтвердить подлинность с Keccak.

1 Ответ

1 голос
/ 09 апреля 2019

Я предполагаю, что вы используете web3.js 0.20.x и не можете передать параметр encoding. Это будет обрабатывать ввод как строку, что, вероятно, не то, что вы хотите:

web3.sha3('0x664f5f32784d335a69596e4f416c636373496859377054744f704c6e54666a314c70314a4f364d565f4638', { encoding: 'hex' })
"0x40de9eb1ead6a6299af30cdf51eca39d44be214ce7431c93ff546cf5fb1ef0fb"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...