比特币私钥、公钥、钱包地址的关系
目录
1.2 椭圆加密算法(Elliptic curve cryptography,缩写为ECC)
1、名词简介
1.1 Hash(散列函数)
1)含义:把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值
2)特点:① 相同的输入,经过Hash运算,输出是相同的
② 对于具有强混淆特性的散列函数,输入的任何微小改变,经过Hash运算,输出是完全不同的
③很难通过输出逆推出输入
1.2 椭圆加密算法(Elliptic curve cryptography,缩写为ECC)
一种公钥加密体制,最初由Koblitz和Miller两人于1985年提出。
椭圆加密算法的数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。
1.3 Base58
Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。
相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。
2、生成钱包地址的步骤
- 1)产生私钥
私钥是一个随机数,长度为256bits(32Bytes)
比如:6E83A5D10F2C386B52A29CAB245F6BA2E55D83249D3D2CD6332671FA226A3FF2
- 2)计算公钥
通过椭圆加密算法(ECDSA-secp256k1)计算私钥对应的非对称公钥,该过程不可逆。
公钥的长度为65Bytes:头部标识1byte(0x04) + X坐标32bytes + Y坐标32bytes
比如:
公钥头部标识:0x04
公钥X坐标:82EEDC7536386DA2C5EDA428B231C7658814CA837F94FADE365D0EC6B0984621
公钥Y坐标:BA26EC5F2C0C8F016A32134589F7B9E97EECDFAC2EF12A91FA622B38A8752FFC
- 3)计算公钥的Hash
拼接公钥地址(头部标识+X坐标+Y坐标),得到公钥标准地址:
0x0482EEDC7536386DA2C5EDA428B231C7658814CA837F94FADE365D0EC6B0984621BA26EC5F2C0C8F016A32134589F7B9E97EECDFAC2EF12A91FA622B38A8752FFC。
对公钥标准地址进行SHA-256Hash计算,得到3030adf9a7a7ed8ebc0463e82cb9fd4c631cf352623d2b409bb6e0fba62fad2a
该过程不可逆。
- 4)对第3步得到的公钥Hash,再次Hash
对3030adf9a7a7ed8ebc0463e82cb9fd4c631cf352623d2b409bb6e0fba62fad2a进行RIPEMD-160Hash计算,
得到2d83ac0cdcce244e0ae2b2663c90ee43334e83c7。该过程不可逆。
- 5)对第4步得到的Hash值,添加版本号
加入地址版本号(比特币主网版本号“0x00”)
002d83ac0cdcce244e0ae2b2663c90ee43334e83c7
- 6)对第5步得到的Hash值,进行两次Hash
对002d83ac0cdcce244e0ae2b2663c90ee43334e83c7进行SHA-256Hash计算,
得到d69bfae91a2671fac73f331bfc81e81a05fc9cba043fc198c551ee4a2985beb8。
对d69bfae91a2671fac73f331bfc81e81a05fc9cba043fc198c551ee4a2985beb8进行SHA-256Hash计算,
得到8f904ae8b04892d862da3999159492417b61897a7d1f0f70740abfda6752618a。该过程不可逆。
- 7)获取第6步结果的前4个字节
获取8f904ae8b04892d862da3999159492417b61897a7d1f0f70740abfda6752618a的前4个字节,
得到8f904ae8。
- 8)拼接第5步得到的Hash值
作为校验位,把第7步得到的4个字节加在第5步结果的前面,
得到8f904ae8002d83ac0cdcce244e0ae2b2663c90ee43334e83c7。
- 9)用Base58编码变换第8步的结果,得到钱包地址
对8f904ae8002d83ac0cdcce244e0ae2b2663c90ee43334e83c7进行Base58编码,
得到hJgGfRCCTpmVhStRoYWJyVygMrRW4ZWcYvNJvTwGBRSUhecPrDf6fbzLCXM2zBSYQxZL。该过程可逆。
3、私钥、公钥、钱包地址关系示意图