¿Por qué la dirección de Bitcoin tiene una longitud de 25 a 34 bytes cuando RIPEMD 160 y SHA-256 tienen solo 20 bytes y 32 bytes respectivamente?

(Soy nuevo en Bitcoin y su tecnología, así que corríjame siempre que pueda). Recientemente estaba leyendo sobre Bitcoin y sus tecnologías subyacentes. Llegué a saber que para generar direcciones, Bitcoin usa RIPEMD-160 (SHA-256). Pero la mayoría de las direcciones de Bitcoin tienen de 25 a 34 bytes (caracteres) y comienzan con 1 o 3. ¿Cómo es esto posible? ¿Hay algún algoritmo de cifrado subyacente junto con funciones Hashing como RIPEMD y SHA?

Respuestas (2)

La dirección de Bitcoin se genera de la siguiente manera:

Los primeros 256 bits de la clave privada (k) se generan utilizando la función de generación de números pseudoaleatorios del sistema operativo subyacente (en la billetera).

Entonces Clave pública (K) = G * k. , donde G es constante en la curva elíptica. es decir, equivalente a k veces la suma de G y el punto K resultante está en la curva que es de 65 bytes.

La dirección se calcula realizando SHA256 seguido de RIPEMD160 en la clave pública (K). por lo que sería de 160 bits = 20 Bytes de dirección.

Ahora, agregue el prefijo de versión 00 (en hexadecimal). Realice SHA256 dos veces en él. Tome los primeros 4 bytes del resultado y agréguelos a (prefijo || dirección).

La resultante sería la dirección final.

Aquí puede encontrar una descripción paso a paso de cómo se genera la dirección de bitcoin: https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

Respuesta corta: la dirección de Bitcoin consta de <version_byte><20 bytes of RIPEMD-160(SHA-256(PublicKey))><4 bytes checksum>= 25 bytes en total

La suma de comprobación son solo los primeros 4 bytes de SHA (SHA ()) de los datos anteriores