Почему биткойн-адрес имеет длину 25-34 байта, тогда как RIPEMD 160 и SHA-256 имеют длину всего 20 и 32 байта соответственно?

(Я новичок в Биткойне и его технологии, так что исправьте меня, где сможете). Недавно я читал о Биткойне и его базовых технологиях. Я узнал, что для генерации адресов Биткойн использует RIPEMD-160 (SHA-256). Но большинство биткойн-адресов имеют длину от 25 до 34 байтов (символов) и начинаются с 1 или 3. Как это возможно? Существует ли какой-либо базовый алгоритм шифрования наряду с функциями хеширования, такими как RIPEMD и SHA?

Ответы (2)

Биткойн-адрес генерируется следующим образом:

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

Тогда открытый ключ (K) = G * k. , где G постоянна на эллиптической кривой. т.е. эквивалентно k-кратному добавлению G, и результирующая точка K находится на кривой, которая составляет 65 байтов.

Адрес вычисляется путем выполнения SHA256, а затем RIPEMD160 для открытого ключа (K). так что это будет 160 бит = 20 байт адреса.

Теперь добавьте префикс версии 00 (в шестнадцатеричном формате). Дважды выполните SHA256. Возьмите первые 4 байта результата и добавьте их к (префикс || адрес).

Результатом будет окончательный адрес.

Здесь вы можете найти пошаговое описание того, как генерируется биткойн-адрес: https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses .

Краткий ответ: биткойн-адрес состоит из <version_byte><20 bytes of RIPEMD-160(SHA-256(PublicKey))><4 bytes checksum>= 25 байтов .

Контрольная сумма — это всего лишь первые 4 байта SHA(SHA()) предыдущих данных.