比特币的身份识别体系是建立在非对称加密技术之上的去中心化系统 每一个身份对应着一对密钥。
非对称加密采用一对密钥(私钥、公钥)进行数据的加密或解密: 用私钥加密则需要用公钥解密;用公钥加密,则需要用私钥解密 这一非对称特性使得其非常适合用于身份表示与验证 —— 公钥用于 身份嘚表示,而私钥则用于身份的验证:
在上图中当tommy需要向jerry发送原始数据时,他首先使用自己的私钥对 原始数据进行签名得到的签名数据附加在原始数据后面,一同发送给jerry jerry收到数据后,使用tommy的公钥就可以验证签名是否是由tommy的私钥签发的 从而确认该数据确实来自于tommy。
虽然公钥可以唯一的标识一个身份但在比特币中更多的使用地址来 标识身份,可以认为地址是一个或一组公钥的精简表示因此同样可以 使鼡私钥进行验证:
使用getnewaddress
调用可以生成并返回一个新的地址,例如:
使用validateaddress
调用可以查看这个地址的相关信息例如公钥:
使用dumpprivkey
调用可以导出這个地址的私钥:
这样看起来,是不是意味着 从地址可以推导出私钥和公钥
希望上面的操作不要误导了你,bitcoind只是在节点钱包里保存了地址和 密钥的对应关系而已任何情况下你都无法从地址反向推导出公钥,或者从 公钥反向推导出私钥