在理解区块链地址产生方法之前,先来简单地理解一下公钥私钥的加密原理:
1. 公钥是对外公开的,而私钥是保密的。当A想要把内容发送给B时,A会用他的私钥对内容加密,然后发送给B。B会用A的公钥来解密。
2. 公钥是通过私钥产生的,这个过程是无法逆转的。
3. 当B需要验证A的身份(数字签名)时,B可以用公钥验证这个数字签名是否是用A的私钥产生的。
当创建比特币的账户时,用户会在本地生成一个私钥,系统会根据这个私钥通过一定的算法,产生该用户的地址。
比特币的公钥产生方式(参考http://en.bitcoinwiki.org/Bitcoin_address):
1. 计算公钥的SHA-256哈希值
2. 通过RIPEMD160函数对第一步的值做加密,生成fingerprint
3. 生成校验位:对fingerprint连续做两次SHA256哈希运算,取前4个字节
4. 0x00位版本前缀,通过对版本前缀+fingerprint+checksume做Base58编码,得到最后的字符串
关于base58:
Base58的计算方式和Base64类似,只是Base58不只用数字0,大写字母,大写I,小写i,还有+和/