Я нашел этот питон код из pybitcoin инструментов. В основном:
Защиту base10_multiply (а, п):
если isinf (а) или п == 0: возврат (0,0)
если п == 1: возвращать
если п < 0 или п >= N: возвращение base10_multiply (а, п% N),
если (п% 2) == 0: возвращение base10_double (base10_multiply (а, п / 2))
если (п% 2) == 1: вернуть base10_add (base10_double (base10_multiply (а, п / 2)), а)
Защиту privkey_to_pubkey (privkey):
если isinstance (privkey, (интермедиат, длинные)):
вернуться base10_multiply (G, privkey)
если Len (privkey) == 64:
Возвращение point_to_hex (base10_multiply (G, расшифровывает (privkey, 16)))
Элиф Len (privkey) == 66:
Возвращение компресс (base10_multiply (G, расшифровывает (privkey [: - 2], 16)), 'шестигранной')
Элиф Len (privkey) == 32:
Возвращение point_to_hex (base10_multiply (G, расшифровывает (privkey, 16)))
Элиф Len (privkey) == 33:
Возвращение компресс (base10_multiply (G, расшифровывает (privkey [: - 1], 16)), 'бин')
еще:
вернуться privkey_to_pubkey (b58check_to_hex (privkey))
Если использовать базу десять, как числа, используемых в верхней части главной области. У меня возникли вопросы, проверяя это о том, как она работает. Похоже, что это простой раз GX закрытый ключ Mod P, чтобы получить й часть общественности. Тогда сделайте это для Y. Это не работает в программе, как Mathematica для проверки.
Кто-нибудь знает регулярную математику, участвующую в принятии закрытого ключа в базе десяти и использовать параметры из основной исходной области для создания общественных х, у? Также ФИПС большой обратный порядок байт, что это реальная боль. Благодарю.