数字货币的公钥到底怎么生成?从私钥一步步推导,原理讲透了

公钥不是随机生成的,它是从你的私钥通过椭圆曲线数学运算"算"出来的。很多人以为公钥是独立存在的,实际上它和私钥是绑定的——私钥是输入数字货币怎么生成公钥,公钥是输出,整个过程是确定性的,同样的私钥永远算出同一个公钥。

以比特币为例,它用的是SECP256K1这条椭圆曲线。私钥本质上是一个256位的大整数,取值范围在1到曲线阶数n-1之间。生成公钥的数学操作就一句话:公钥 = 私钥 × G,这里的G是曲线上一个固定的基点,所有参与方都知道。

数字货币的公钥到底怎么生成?从私钥一步步推导,原理讲透了

这个"×"不是普通乘法,是椭圆曲线上的标量乘法。把私钥(一个整数)不断加自身,加私钥那么多遍,得到的坐标点(x, y)就是公钥。压缩形式下公钥是33字节,非压缩是65字节,都直接对应曲线上一个确定的点。

拿到公钥之后,还要再走一步才能变成钱包地址:先对公钥做SHA-256哈希,再对结果做RIPEMD-160数字货币的公钥到底怎么生成?从私钥一步步推导,原理讲透了,再加上版本前缀和校验码,做Base58编码,这才是你看到的那串地址。整条链路是:私钥→公钥→哈希→地址,每一步都是单向的,地址无法反推私钥。

你有没有试过用Python的ecdsa库,拿一个随机数当私钥,跑一遍生成公钥再算出地址?整个过程不到十行代码,亲手做一遍比看十篇文章都清楚。你手上如果有现成的私钥,不妨试试看能不能推导出对应的公钥。

相关阅读