【序号、时间戳、hash值】+【交易记录】
非对称加密
对称加密也叫做单密钥加密,指的是用同一个密钥对信息进行加密和解密。简单讲就是上锁和开锁都是一把钥匙。一个问题是密钥配送困难问题。
非对称加密有一对密钥,分别是私钥和公钥,公钥和私钥一一对应,私钥需要保密,而公钥则是可以公开的。加密和解密不是用同一个密钥。
回到之前的例子,你朋友去配了一对钥匙(钥匙A和钥匙B),钥匙A上锁柜子之后,必须要钥匙B才能开锁柜子。你朋友把钥匙A邮寄给你,你用这把钥匙把信件锁到柜子中,然后将柜子邮寄给你朋友,你朋友用钥匙B打开柜子取出信件。细心的小伙伴又想到了,朋友把钥匙A寄给自己的时候,可能会被快递人员偷配钥匙,但是快递人员即使持有钥匙A,他也不能打开柜子,因为钥匙A上锁柜子之后,只有钥匙B才能开锁,整个过程,钥匙B一直在朋友手上,只要朋友不把钥匙B弄丢,这个柜子就只能由朋友打开。
比特币公钥就是通过私钥推导而来,公钥继续转换变成账户地址,而且是不能反向推导出私钥的**,私钥和公钥是一对,用户需要妥善保管好自己的私钥,而公钥和账户地址都是可以公开的。
还有一种情况是私钥加密,公钥解密。典型的应用场景就是数字签名,A采用自己的私钥加密文件信息后发送给B,并将公钥也发送给B,B利用这个公钥对信息解密,如果C和D也有这个公钥,那C和D也可以解密这个文件信息,但是只有持有私钥的A才能加密这个信息,因此可以确保这个文件信息确确实实是由A发出的,这就比较适用于一些公司老总做电子签名,以确保签名是老总签的。在区块链中,你的收款地址就相当于公钥,人人可以看到,但是如果你要转移你的资产给朋友,你需要输入密码(私钥)进行数字签名,来表示这个资产确确实实是由你发出的。
搭建一个区块链框架
1 | import hashlib |