Bitcoin hex to wif

Wallet import format

This page contains sample addresses and/or private keys. Do not send bitcoins to or import any sample keys; you will lose your money.

Wallet Import Format (WIF, also known as Wallet Export Format) is a way of encoding a private ECDSA key so as to make it easier to copy.

A testing suite is available for encoding and decoding of WIF at:

Private key to WIF

1 — Take a private key

2 — Add a 0x80 byte in front of it for mainnet addresses or 0xef for testnet addresses. Also add a 0x01 byte at the end if the private key will correspond to a compressed public key

3 — Perform SHA-256 hash on the extended key

4 — Perform SHA-256 hash on result of SHA-256 hash

5 — Take the first 4 bytes of the second SHA-256 hash, this is the checksum

6 — Add the 4 checksum bytes from point 5 at the end of the extended key from point 2

7 — Convert the result from a byte string into a base58 string using Base58Check encoding. This is the Wallet Import Format

WIF to private key

1 — Take a Wallet Import Format string

2 — Convert it to a byte string using Base58Check encoding

3 — Drop the last 4 checksum bytes from the byte string

4 — Drop the first byte (it should be 0x80). If the private key corresponded to a compressed public key, also drop the last byte (it should be 0x01). If it corresponded to a compressed public key, the WIF string will have started with K or L instead of 5 (or c instead of 9 on testnet). This is the private key.

WIF checksum checking

1 — Take the Wallet Import Format string

2 — Convert it to a byte string using Base58Check encoding

3 — Drop the last 4 checksum bytes from the byte string

3 — Perform SHA-256 hash on the shortened string

4 — Perform SHA-256 hash on result of SHA-256 hash

5 — Take the first 4 bytes of the second SHA-256 hash, this is the checksum

6 — Make sure it is the same, as the last 4 bytes from point 2

7 — If they are, and the byte string from point 2 starts with 0x80 (0xef for testnet addresses), then there is no error.

This page is a stub. Help by expanding it.

Источник

Приватный ключ биткоина (private key) – что это такое, как выглядит, как получить и безопасно сохранить

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

В то время как публичный ключ, или адрес, представляет собой средство идентификации кошелька, подобие логина, приватный ключ – строго конфиденциальная информация. Внешне выглядит как набор символов, введя которые, пользователь получает доступ к управлению счетом. Приватные (их еще называют частными или закрытыми) ключи хранятся в специальном файле, публичные –формируются криптографическим методом именно на основе приватных.

Читайте также:  Инвестиции под 300 годовых

Как внешне выглядят публичный и приватный ключи кошелька биткоина

Приватный ключ биткоина кодируется в следующих форматах: Base64, MINI, Hex, WIF, сжатый WIF. Все они взаимосвязаны и преобразуются один в другой:

  • Формат WIF (51 символ, «5» в начале): 5JPeWYZx922hXi49Lg2RJPwLfqcmDGS9YegMNgANvx8cJa6kNK8.
  • Большинство криптовалютных кошельков, используют для хранения приватных ключей WIF-сжатый формат (52 символа, начинается с «L» или «K»): KykxZQLSNPYVtYCsoqFGFnEqpRar997zihJgvfrPo8LapFrAtaea.
  • Формат Hex (64 символа): 4BBFF74CA25A2A00409DCB24EC0418E9A41F9B3B56216A183E0E9731F4589DC6.
  • Формат Base64 (44 символа): S7/3TKJaKgBAncsk7AQY6aQfmztWIWoYPg6XMfRYncY=.

На картинке один приватный ключ биткоина в разных форматах:

Публичный адрес (ключ)

Внешний вид публичного биткоин-ключа в различных форматах:

  • Наиболее используемый в кошельках — короткий адрес. Он имеет вид 1BSUkuwtdM7gkdy6W4Q954gNKWBgy4A19Q и всегда начинается с единицы или тройки (segwit address).

Публичные ключи (public key) видны всем желающим и используются как адрес для отправки или получения биткоинов. В одном кошельке можно сгенерировать неограниченное количество публичных ключей. Каждому будет соответствовать свой приватный ключ.

Как создать приватные биткоин-ключи

При создании любого кошелька для биткоина создается приватный ключ. В зависимости от вида бумажников можно обладать контролем над ними или нет. Последний случай больше относится к онлайн-сервисам, на которых можно пройти простую регистрацию, получить адрес биткоина, но приватные ключи не доступны. Контроль над ними имеют владельцы данных онлайн-кошельков. Поэтому рекомендуем выбирать криптокошельки с возможностью выгрузки приватных ключей или сохранением seed.

  1. Локальные. Устанавливаются на десктопные или мобильные устройства. К ним относят Jaxx, Electrum, Coinomi, Exodus и другие. Делятся на «тонкие» и «толстые», в зависимости от способа обращения к блокчейн-сети.
  2. Онлайн-кошельки. Для их создания обычно нужно указать email и пароль. Такие сервисы могут предоставлять возможность просмотра приватных ключей или не иметь такой функции. Популярные сайты для хранения криптомонет: blockchain.com.
  3. Биржи криптовалют. После создания счета доступны кошельки для криптовалют, которые в листинге площадки. Приватные ключи не предоставляются. Можно вносить депозит на предоставленный адрес, торговать криптовалютой и совершать вывод. Популярные торговые платформы: LocalBitcoins (ЛокалБиткоинс), EXMO, Binance, Huobi, BitMEX и другие.
  4. Аппаратные кошельки. Наиболее безопасный вариант сохранить криптоактивы в безопасности. Владелец имеет полный контроль над всеми приватными ключами, а их кража невозможна. Выпускают аппаратные устройства Ledger, Trezor и другие.
  5. Бумажные. Это может быть просто записанный приватный ключ на бумаге или сервисы, которые его генерируют и предоставляют возможность распечатать и сохранить. Способ относится к «холодному» хранению криптовалют.

Как получить (экспортировать) приватный ключ биткоина

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

Извлечение (экспорт) приватных ключей из криптокошельков

В качестве примера используется «тонкий» десктопный кошелек Exodus. В нем нужно произвести операцию экспорта приватного биткоин-ключа. Изначально она надежно скрыта, поскольку разработчики справедливо считают, что неопытному пользователю лучше не пытаться ее произвести. Неверные действия чреваты потерей средств из кошелька.

Инструкция по экспорту:

  1. Активировать «Developer Menu». В Windows и Linux это действие производится нажатием сочетания клавиш Ctrl+Shift+D.
  2. Выбрать ту криптовалюту, частный ключ которой интересует в текущий момент. Перейти по пунктам: «Developer» – «Assets» – «Bitcoin» или иная выбранная валюта – «Export Private Keys».
  3. В появившемся окне подтвердить свое желание нажатием кнопки «I’m sure».
  4. На рабочем столе появится папка под названием «Exodus-export», внутри – файл формата CSV. Это файл скопировать в надежное место, папку сразу удалить.
Читайте также:  Как рассчитать объем дополнительных инвестиций

Открыть файл можно через текстовый редактор Libre Office, Wordpad, Exel, стандартный Блокнот и т. д. В графе «PRIVKEY» будет буквенно-цифровое сочетание – это и есть приватный (закрытый) ключ биткоина:

Получение приватного ключа из онлайн-кошелька Blockchain

Рассмотрим, как получить приватный ключ в популярном онлайн-кошельке Блокчейн. В настройках функции экспорта ключей нет. Нужно воспользоваться seed-фразой, которая находится по адресу «Настройки» — «Безопасность» — «Фраза для восстановления кошелька». Скопировать все слова и перейти в генератор iancoleman.io . Указать количество слов (12) и вставить их в форму «BIP39 Mnemonic».

Опуститься вниз страницы в раздел «Derived Addresses». В нем будет адрес, публичный и приватный ключ.

Получение ключа в бумажного кошельке

Бумажные кошельки генерируют приватные ключи локально с помощью выполнения скрипта в браузере.

После сбора случайной энтропии высветится сжатый адрес биткоина и приватный ключ в сжатом WIF-формате. Что с ними делать, понятно по картинке:

Сервис для создания бумажных кошельков: bitaddress.org.

Что такое детерминированный кошелек (HD wallet), seed фраза

В 2011 году для решения ряда проблем с анонимностью разработчики Bitcoin Core выпустили такую разработку, как HD Wallet. HD расшифровывается «hierarchical deterministic», то есть «иерархически детерминированный». Звучит непонятно, но по факту все не так сложно.

В контексте криптовалют словом «иерархия» обозначают связь между элементами. В данном случае появляется возможность использовать один адрес для выяснения второго, а также применять секретную seed-фразу для генерации сразу многих связанных между собой адресов.

Пример seed (backup phase) в кошельке Blockchain (всего 12 слов):

«Детерминированная» система – та, где недопустимы никакие случайности в процессе формирования будущих состояний. То есть конкретные вводные данные всегда будут выдавать конкретный результат.

Преимущества технологии HD wallet:

  1. Усиление анонимности. Владелец HD wallet обладает одной копией программного бумажника с одним тайным ключом (называемым также «семя» или «master key»). При объединении семени с хеш-функциями образуется бесконечное количество связанных между собой адресов. Связь невидима со стороны. Это адреса называют «дочерними».
  2. Легкость запоминания сид-фразы. Записать или выучить код из 12 слов намного легче, чем хранить приватные ключи для каждого отдельного адреса биткоина.
  3. Комфортное резервное копирование. Многие пользователи сталкиваются с проблемами резервного копирования мобильных кошельков на iOS или Android – возникает необходимость использовать один и тот же ключ, а это прямая угроза для безопасности. HD кошелек вообще не требует создания резервных копий, достаточно распечатать или сохранить в надежном месте сид-фразу.

Технология реализована в надстройке Armory для Bitcoin Core, кошельках Electrum, MultiBit HD, BitGo, CarbonWallet, The Hive, Mycelium Bitcoin Wallet, Green Address, Trezor и других.

Как безопасно хранить приватные ключи

Используя интернет-кошельки, следует понимать, что ключи хранятся на серверах компании-разработчика. Пользователь лично владеет private key лишь в случае использования десктопных, аппаратных или бумажных кошельков.

Варианты хранения кода:

  1. На бумаге.
  2. На флешке в виде скриншота или фотографии, pdf-файла.
  3. На жестком диске, в том числе съемном.
  4. На физической монете, металлической пластине (своеобразный аналог аппаратного «холодного» кошелька в форме криптовалютной монеты).
  5. В памяти.
Читайте также:  Инвестиции объектов основных средств это

Ни один из перечисленных способов не дает 100%-ную гарантию сохранности ключа, в каждом случае есть вероятность физического повреждения, взлома или кражи. Так что выбор каждый делает, исходя из своих соображений.

В Сети сейчас много злоумышленников, которые мечтают украсть приватный ключ биткоина. Они могут соблазнять бесплатными токенами, предлагать получить новые монеты, а взамен просят загрузить в сеть или созданную ими программу частный ключ. Делать этого ни в коем случае нельзя.

Источник

Python 2.7 Converting Bitcoin Privkey into WIF Privkey

I just went through a tutorial as a coding newbie. The tutorial was this one: https://www.youtube.com/watch?v=tX-XokHf_nI. And I wanted to generate my Bitcoin addresses/privkeys with 1 single easy to read (not cryptic) Python file — just in the style the code is written right now.

The tutorial got to the part where I got the Bitcoin address starting with a «1» but not the privkey starting with a «5». Plus I am missing how to BIP38 encrypt the private key (starting with a «6»). It’s as you can see for the main Bitcoin network.

Was using https://en.bitcoin.it/wiki/Wallet_import_format as a step by step guide after the tutorial. In the end I commented out my tries to do it myself because it all was rubbish. (The part with «SHA256 HASHED EXTENDED PRIVATE KEY THIS IS WRONG ON SO MANY LEVELS») I think the part where I added the 80 bytes to the Private Key could be correct.

PS: I’m using a static private key for now until everything works, which is why I commented out the non-static private key part. It has been generated via the part I commented out «non static private key usage». I also commented out the signed message code lines (at the bottom of the code) because they were shown in the tutorial, not important for the key/address generating. I also tried to «beautify» the code a bit by putting prints etc. only at the bottom of the file and sorting things a bit different etc. but it turned out Python 2.7 didn’t like that.

I am using Python 2.7, installed everything successfully, the code is working as it should right now with the commented out parts. I verified the results it printed with bitaddress.org, just like the uploader from the tutorial did. Tried searching to find a solution, but I could not get anything useful out of my search results.

If you could help me out with the few missing lines of code, I’d be happy! Also maybe explain / comment in the code what does what. Especially for the yet missing BIP38 Privkey password encryption. So I can see what is what and can understand.

Running the .py script returns valid results, except for the 80 bytes I added — no Idea if this has been done correct by me. Adding 80 bytes is a needed step for getting the final private key starting with a «5» later.

Running it prints:

Here you can see my code, commented here and there as good as I could according to the tutorial: (Forgot to comment out the «This is my hashed ext priv key checksum» part, sorry for confusion. This is the code I need help now with.)

Источник

Оцените статью