Python区块链 客户端类
The Client 类生成 private and public 使用内置 Python 的键 RSA 算法。有兴趣的读者可以参考 本教程 用于实现 RSA。在对象初始化期间,我们创建私钥和公钥并将它们的值存储在实例变量中。
self._private_key = RSA.generate(1024, random) self._public_key = self._private_key.publickey()
请注意,你永远不应该丢失你的私钥。为了保存记录,生成的私钥可以复制到安全的外部存储中,或者你可以简单地在一张纸上写下它的 ASCII 表示。
生成的 public 密钥将用作客户的身份。为此,我们定义了一个名为 identity 返回公钥的十六进制表示。
@property def identity(self): return binascii.hexlify(self._public_key.exportKey(format='DER')) .decode('ascii')
The identity 对每个客户都是独一无二的,可以公开获得。任何人都可以使用它向你发送虚拟货币 identity 它将被添加到你的钱包中。
的完整代码 Client 类在这里显示:
class Client: def __init__(self): random = Crypto.Random.new().read self._private_key = RSA.generate(1024, random) self._public_key = self._private_key.publickey() self._signer = PKCS1_v1_5.new(self._private_key) @property def identity(self): return binascii.hexlify(self._public_key.exportKey(format='DER')).decode('ascii')
测试客户端
现在,我们将编写代码来说明如何使用 Client class:
Dinesh = Client() print (Dinesh.identity)
上面的代码创建了一个实例 Client 并将其分配给变量 Dinesh .我们打印公钥 Dinesh 通过调用它 identity 方法。输出如下所示:
30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07 0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72 3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3 c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6 6f347bd411d07f0203010001
现在,让我们继续在下一章创建一个事务。