Я всегда интересно, на этот вопрос. Конечно, с точки информатики зрения, ничего не действительно случайным образом. У вас есть случайная функция, которая может использовать системную метку времени в качестве затравки, или комбинации MAC-адрес, компьютерной архитектуры и т.д. Так что, если я пытаюсь сформировать адрес Bitcoin, используя те же условия, которые когда-то имели Satoshi, возможно, я могу генерировать свой адрес с больше вероятность и может преуспеть один день, и получить его потерянные сокровища, лол. Хотя звучит не просто, но это все еще возможно, не так ли?
Вы никогда не будете успешно генерировать адреса Satoshi в к тому же вам нужен бумажник закрытый ключ не публичный адрес. Это невозможно. Биткойн адрес эффективно (на самом деле не) случайным образом, хотя это получено с использованием 160-битного хэш публичной части открытого / секретного ECDSA пары ключей. Использование криптографии с открытым ключом, вы можете "знак" данные с закрытым ключом, и любой, кто знает открытый ключ может проверить, что подпись действительна.
Как создать Bitcoin адрес
Возьмите закрытый ключ ECDSA
Возьмем соответствующий открытый ключ, созданный с помощью ключа ECDSA (65 байт, 1 байт 0x04, 32 байта, соответствующие координаты Х, 32 байт, соответствующий Y-координата)
Выполните SHA-256 хеширования на открытом ключе
Выполните RIPEMD-160 хэширования на результат SHA-256
Добавить версии байт перед RIPEMD-160 хэша (0x00 для главной сети)
Выполните SHA-256 хэш на расширенной RIPEMD-160 результата
Выполните SHA-256 хэш от результата предыдущего SHA-256 хэш
Возьмите первые 4 байта второй SHA-256 хэш. Это адрес контрольной суммы.
Добавьте 4 контрольных суммы байт от конца вытянутого RIPEMD-160 хэша. Это 25-байтовый двоичный Bitcoin адрес.
Преобразование результата из строки байт в строку base58, используя кодирование Base58Check. Это наиболее часто используемый формат Bitcoin адреса.
Bitcoin адрес является pubkeyhash (не Публичным) плюс версию и контрольная сумма информации, закодированный в базе 58.
Биткойн адрес = + версии RIPEMD-160 (SHA-256 (открытый ключ)) + контрольная сумма