Каков подход к вычислению адреса Ethereum из 256-битного закрытого ключа?

Для данного частного ключа, сгенерированного MyEtherWallet , я хотел бы видеть, что у меня есть инструменты для самостоятельного прихода при аналогичных результатах.

Написал обертку вокруг Keccak принять как шестнадцатеричные, так и ASCII-входы sha3-224 или sha3-256 или sha3-384 или sha3-512 hashed. Хэши согласуются с тестовыми векторами . Хотелось бы применить его с командами bitcoin-explorer ( bx ) version3 , чтобы узнать, могу ли я синтезировать ETH-адреса. Если удастся синтезировать адреса для Eto, XMR и MAX altcoins, я пытаюсь отправить запрос на перенос, чтобы добавить возможности хэширования sha3 в bx version3 , и обновить этот Wiki относительно применения bx к altcoins.

5 голосов | спросил skaht 29 TueEurope/Moscow2015-12-29T07:41:28+03:00Europe/Moscow12bEurope/MoscowTue, 29 Dec 2015 07:41:28 +0300 2015, 07:41:28

2 ответа


6
  1. Начать с байтов открытого ключа (байтовая длина длиной 64)
  2. Из этого открытого ключа возьмите хэш Keccak-256 повсеместно, используя Ethereum (убедитесь, что вы правильно это понимаете, так как в конечном итоге стандартизованный хэш SHA3-256 отличается). Теперь вы должны иметь байтов длиной 32.
  3. Отбросьте первые 12 байтов. Теперь у вас должна быть байтовая длина длиной 20, адрес Ethereum, связанный с вашим открытым ключом.

Обновление: Упс! Я вижу, что вы хотите его от закрытого ключа, а не от открытого ключа. Это сложнее. Вы должны сначала вывести открытый ключ из секретного ключа, который лучше всего с помощью библиотеки криптоконтента EC. Я могу показать вам пример кода в Scala, но математика EC - это в основном черный ящик для меня. Во-первых, интерпретировать 256-битный закрытый ключ как целое число без знака. Затем см., Например, . Curve представляет названную eliptic curve secp256k1. Детали математики, увы, выше меня, но, надеюсь, в любой среде, которую вы кодируете, у вас есть доступ к высококачественной криптографической библиотеке.

ответил Steve Waldman 29 TueEurope/Moscow2015-12-29T08:24:21+03:00Europe/Moscow12bEurope/MoscowTue, 29 Dec 2015 08:24:21 +0300 2015, 08:24:21
2

Для вычисления адресов ETH используются последние 20 байтов хеша Keccak-256. Не следует использовать ароматы NIST FIPS 202 Keccak, такие как KeccakCodePackage .

Однако хак к main.c и genKATShortMsg.cpp из KeccakTools даст соответствующие ETH-адреса, подробнее в комментарии выше.

Для следующего закрытого ключа ETH: b205a1e03ddf50247d8483435cd91f9c732bad281ad420061ab4310c33166276. Связанный открытый ключ получается из использования bx.

% echo b205a1e03ddf50247d8483435cd91f9c732bad281ad420061ab4310c33166276 | bx ec-to-public -u
04**6cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153fd94ed48e1f63312dce58f4d778ff45a2e5abb08a39c1bc0241139f5e54de7df**

Для выполнения команды KeccakTools/Example\ trails из каталога Example\ trails.

% cat ShortMsgKAT.txt

\# Algorithm Name: NOT_FIPS202_SHA3_256
\# Principal Submitter: SKAHT
Len = 512
Msg = 6cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153fd94ed48e1f63312dce58f4d778ff45a2e5abb08a39c1bc0241139f5e54de7df

Файл из ShortMsgKAT_keccak-256.txt создается из выполнения KeccakTools, который будет содержать:

MD = 787EC5A5313A976F7BDF9EED**AFDEFC1937AE294C3BD55386A8B9775539D81653** 

, когда описанный выше хак выполняется для создания KeccakTools .

ответил skaht 31 ThuEurope/Moscow2015-12-31T08:35:05+03:00Europe/Moscow12bEurope/MoscowThu, 31 Dec 2015 08:35:05 +0300 2015, 08:35:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132