Как я могу протестировать и проверить ключ тщеславия, прежде чем отправлять на него монеты?

Я запустил vanitygen и oclvanitygen на одном компьютере и понял после запуска, что оба exe используют один и тот же выходной файл.

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

Независимо от источника повреждения, каков наиболее полный способ проверки ключа, созданного vanitygen?

Обновлять

Я добавил тег разработчика, так как хочу провести массовую проверку. Скрипты командной строки тоже работают.

Ответы (4)

Если вы не хотите делать это онлайн, вы можете попробовать импортировать закрытый ключ в Bitcoin-Qt, а затем посмотреть, соответствует ли открытый ключ тому, который вы ожидали.

Openssl можно использовать для преобразования закрытых ключей в открытые. Следующая команда дает вам открытый ключ из известного закрытого ключа. Закрытый ключ должен быть в виде файла PEM:

$ cat private_key.pem

-----НАЧАТЬ ЗАКРЫТЫЙ КЛЮЧ EC-----
MHQCAQEEIMURrYd6CTHlrrV0JOxnze9ldaq3mRYMnYJ8195GldAVoAcGBSuBBAAK
uQDQgAEANPTV3v+8AMXnIPaerOWziyc6tHbmbhORhbVKv1ACYuO+ohlFaV6QaOz
/AGjoSXV0ZeKxq7FijsAdBzeu23Fgg==
-----КОНЕЦ ЗАКРЫТОГО КЛЮЧА EC-----

Примечание: если у вас есть закрытый ключ в шестнадцатеричном формате, вам следует преобразовать его в формат PEM, используя процедуру этого ответа .

Чтобы получить открытый ключ из закрытого ключа, мы используем openssl:

$ openssl ec -pubout /dev/null

-----НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ-----
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEANPTV3v+8AMXnIPaerOWziyc6tHbmbhO
RhbVKv1ACYuO+ohlFaV6QaOz/AGjoSXV0ZeKxq7FijsAdBzeu23Fgg==
-----КОНЕЦ ОТКРЫТОГО КЛЮЧА-----

Чтобы преобразовать открытый ключ в биткойн-адрес, нам нужно выполнить несколько шагов :

Сначала нам нужно вычислить hash160 открытого ключа. Это можно сделать следующим образом:

$ openssl ec -pubout /dev/null |
  openssl ec -pubin -pubout -outform DER 2>/dev/null |
  хвост -c 65 |
  openssl dgst -sha256 -binary |
  openssl dgst -rmd160 -binary |
  ххд -р -с 80

ab085c55b735d4a811df3f55e6508634f1ce1e27

Затем hash160 должен использоваться для вычисления контрольной суммы следующим образом:

$ echo -n "ab085c55b735d4a811df3f55e6508634f1ce1e27" |
  xxd -p -r |
  openssl dgst -sha256 -binary |
  openssl dgst -sha256 -binary |
  xxd -p -c 80 |
  голова -с 8

7801f8dc

Хэш160 в сочетании с контрольной суммой и первым байтом «00» может быть закодирован с использованием базы 58 . Это дает нам адрес:

base58=({1..9} {A..H} {J..N} {P..Z} {a..k} {m..z})

кодироватьBase58 () {
    # 58 = 0x3А
    бк 0) { n%3A ; n/=3A }" |
    так |
    пока читал н
    сделать эхо -n ${base58[n]}
    Выполнено
}
$ printf "%34s\n" "$(encodeBase58 "00$1$(контрольная сумма "$char$1")")" |
  sed "г/ /1/"

1GbLZiNzi7DTB4UowMuyqJw5Bh95yCbu3R

Собрав все вместе , мы можем использовать функцию publicKeyToAddress, как определено ниже. Это может быть часть сценария bash или вы можете ввести его в командной строке.

base58=({1..9} {A..H} {J..N} {P..Z} {a..k} {m..z})

кодироватьBase58 () {
    # 58 = 0x3А
    бк 0) { n%3A ; n/=3A }" |
    так |
    пока читал н
    сделать эхо -n ${base58[n]}
    Выполнено
}

контрольная сумма () {
    xxd -p -r /dev/null |
    хвост -c 65 |
    openssl dgst -sha256 -binary |
    openssl dgst -rmd160 -binary |
    ххд -р -с 80
    )
}
$ openssl ec -pubout /dev/null | пабликкейтоаддресс

1GbLZiNzi7DTB4UowMuyqJw5Bh95yCbu3R

Моя лучшая рекомендация — попытаться импортировать закрытый ключ в сервис https://blockchain.info/wallet/ . Это можно найти на вкладке «Дополнительно» кошелька. Соответствующий публичный ключ будет добавлен в ваш кошелек для депозитов.

Второй вариант, который не требует наличия учетной записи, — пройти через https://www.bitaddress.org и проанализировать его с помощью вкладки личного адреса.

Библиотека pycoin Python может стать хорошей отправной точкой. У него есть утилита, которая даст вам открытый ключ для данного закрытого ключа. К сожалению, он не имеет интерфейса командной строки, подходящего для простого программного использования.