Към съдържанието
ДаретеEN

Ключове и адреси

Частен ключ

Частен ключ биткойн: как се генерира, 32 случайни байта като 64 шестнадесетични цифри, диапазон от 1 до n-1 и криптографска случайност.

От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.

Частният ключ в биткойн (bitcoin) се генерира така: взимат се 256 случайни бита от източник, създаден за тайни, и се проверява дали числото е между 1 и n-1. Резултатът е 32 байта, или 64 шестнадесетични цифри. Всеки, който научи ключа, може да похарчи монетите, заключени към съответния публичен ключ. Публичният ключ, адресът и всеки подпис, който правите, идват от това едно число.

Частният ключ е коренът на раздела за ключовете. Пазете го в тайна и прочетете тази страница, преди да работите с него.

Как изглежда частният ключ?

Частният ключ е 32 случайни байта, записани с 64 шестнадесетични цифри, проверени спрямо диапазон. Частният ключ е 256 случайни бита 32 байта, записани с 64 шестнадесетични цифри db f3 4e bb 79 7c 7b 62 96 0c 0c 7d 17 84 c3 20 9d 5d e7 ab f3 07 df 4a 07 da c9 c7 6f 22 ee 72 Всяка клетка е един байт, от 00 до ff 1. Вземете 32 случайни байта 2. Проверете дали е между 1 и n-1 3. Пазете го в тайна и подписвайте
Всяка клетка е един байт. Всичките 32 клетки държат 256-те бита на ключа.

Повечето инструменти показват частния ключ като 64 шестнадесетични цифри, които са 32 байта. Този пример е само за илюстрация:

dbf34ebb797c7b62960c0c7d1784c3209d5de7abf307df4a07dac9c76f22ee72

Не го ползвайте с истински монети. Шестнадесетичният запис е просто начин да се запише числото. Числото 255 е ff в шестнадесетичната система и 11111111 в двоичната, но и в двата записа стойността е една и съща. Частен ключ, записан в десетична система, е същият ключ.

Как се генерира частен ключ?

Генерирането става на две стъпки. Първо се взимат 256 случайни бита от източник, създаден за тайни. После се проверява дали числото е в допустимия диапазон, който е описан по-долу. Най-важна е случайността. Избягвайте обикновената функция за случайни числа, която повечето езици имат. Тя е бърза, но предсказуема. На Linux и macOS /dev/urandom е сигурен източник. Модулите secrets на Python и crypto.randomBytes в Node.js също са сигурни.

Този кратък Python пример избира число от 1 до n-1, допустимия диапазон, затова не е нужна отделна проверка. N е n, редът на кривата, който ще обясним по-долу.

import secrets

N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

key = secrets.randbelow(N - 1) + 1   # равномерно число от 1 до N-1
print(f"{key:064x}")                 # частният ключ като 64 шестнадесетични цифри

Генерирайте ключовете на собствения си компютър, а не на сайт, защото сайтът може да запази копие. Ключовете, които правите сами, са за учене и тестове. За истински пари повечето хора се справят по-добре с портфейл, който създава ключовете и пази резервно копие на тях вместо вас.

Кой диапазон от числа е допустим?

Допустимите частни ключове са от 1 до n-1, точно под 2^256, така че нулата и всичко над n-1 не са валидни. 0 не е допустим ключ Умножението на G по 0 не дава публичен ключ. От 1 до n-1 е допустимо n е редът на кривата secp256k1 n-1 в шестнадесетичен запис, 64 цифри: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE BAAEDCE6AF48A03BBFD25E8CD0364140 най-големият допустим ключ n и по-големите не са допустими около 1 на 2^128 случайни числа попадат тук
n е броят на точките в кривата secp256k1, която ползва биткойн.

Допустим частен ключ е всяко цяло число от 1 до n-1. В десетична система n-1 е 115792089237316195423570985008687907852837564279074904382605163141518161494336. В шестнадесетична система е FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140. Нулата не е допустима, както и никое число, което е равно на n или по-голямо.

n-1 е малко под 2^256. Числата от n до 2^256 - 1 не са валидни ключове. Случайно 256-битово число попада там с вероятност около 1 към 2^128, затова случаят е рядък. Внимателният генератор все пак отхвърля такова число и избира ново. Кодът по-горе прави същото, защото избира директно от диапазона.

Биткойн ползва кривата secp256k1, а страницата за частни ключове в Bitcoin Wiki дава същия диапазон.

Защо случайността е толкова важна?

Ключовете са толкова сигурни, колкото е сигурна случайността им. Ако нападател може да предвиди резултата от генератора ви, може да възстанови ключа ви, без изобщо да пипне компютъра ви. Предсказуем генератор е добър за игра, но е катастрофа за пари.

Докладът Milk Sad от 2023 г. показва какво се случва. Командата bx seed в libbitcoin Explorer е задавала начална стойност на Mersenne Twister, предсказуем генератор на числа, по системния часовник. Така началната стойност е имала само около 32 бита, а нападателите са могли да изпробват всички вероятни варианти. Докладът оценява, че над 900,000 долара в криптовалута са били преместени.

Колко голямо е пространството от ключове?

Броят на допустимите частни ключове е около 2^256, което е приблизително 1.16 × 10^77. Това е число с 78 цифри. Дори ако всеки компютър на Земята проверяваше милиарди ключове в секунда, пълното търсене щеше да трае много по-дълго от възрастта на Вселената. Двама души, които генерират ключове сигурно, няма да изберат един и същ ключ по случайност.

Как се използва частният ключ?

Частният ключ е началната точка за публичния ключ. Портфейлът умножава ключа по фиксирана точка на елиптичната крива, а резултатът е публичният ключ. Плащането заключва монетите към този публичен ключ или към неговия хеш.

За да похарчите тези монети, портфейлът прави подпис с частния ключ. Подписът доказва, че държите ключа, без да го показва. Мрежата проверява подписа спрямо публичния ключ, който е записан в заключването или се показва, когато похарчите монетите. Самият частен ключ никога не се появява в блокчейна.

Как частните ключове се вписват в портфейлите и сийд фразите?

Повечето съвременни портфейли не пазят един ключ. Те извеждат (деривират) много ключове от една сийд фраза. Когато внасяте един ключ, портфейлът често иска той да е в WIF формат. WIF добавя байт за версията, незадължителен флаг за компресия и контролна сума към същите 32 байта.

Как да пазите частния ключ?

  • Никога не го въвеждайте в уебсайт, чат или формуляр.
  • Никога не го пазете в обикновен текстов файл, екранна снимка или облачна бележка.
  • Никога не го споделяйте, за да получите помощ. Споделете вместо това идентификатора на трансакцията (txid).

Всеки, който има частния ключ, може да похарчи монетите зад него, дори без достъп до приложението на портфейла ви. Пазете го така, както бихте пазили парите в брой.

В този раздел: Ключове и адреси

Целият курс „Биткойн от нулата“

Нещо не изглежда наред? Кажете ни